Merge pull request #19322 from kamil-tekiela/cache-isAnyTrackingInProgress

Cache isAnyTrackingInProgress
This commit is contained in:
Maurício Meneghini Fauth 2024-10-15 19:29:17 -03:00 committed by GitHub
commit 136f1db5a2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -48,6 +48,13 @@ class Tracker
*/
protected static array $trackingCache = [];
/**
* Cache of checked databases.
*
* @var bool[]
*/
private static array $trackedDatabaseCache = [];
/**
* Actually enables tracking. This needs to be done after all
* underlaying code is initialized.
@ -317,6 +324,8 @@ class Tracker
return false;
}
unset(self::$trackedDatabaseCache[$dbName]); // Clear cache due to the change in tracking status
$sqlQuery = sprintf(
'UPDATE %s.%s SET `tracking_active` = %d'
. ' WHERE `db_name` = %s AND `table_name` = %s AND `version` = %s',
@ -678,6 +687,10 @@ class Tracker
TrackingFeature $trackingFeature,
string $dbname,
): bool {
if (isset(self::$trackedDatabaseCache[$dbname])) {
return self::$trackedDatabaseCache[$dbname];
}
$sqlQuery = sprintf(
'/*NOTRACK*/ SELECT 1 FROM %s.%s WHERE tracking_active = 1 AND db_name = %s LIMIT 1',
Util::backquote($trackingFeature->database),
@ -685,6 +698,9 @@ class Tracker
$dbi->quoteString($dbname, ConnectionType::ControlUser),
);
return $dbi->queryAsControlUser($sqlQuery)->fetchValue() !== false;
$isTracked = $dbi->queryAsControlUser($sqlQuery)->fetchValue() !== false;
self::$trackedDatabaseCache[$dbname] = $isTracked;
return $isTracked;
}
}