resourceloader: Reduce module_deps write slams after deployments
Bug: T124649 Change-Id: I8d45e538f7d3d098a89950e5777e0984c90d7e51
This commit is contained in:
parent
7c4bd85d21
commit
1d15085bb3
1 changed files with 13 additions and 1 deletions
|
|
@ -433,16 +433,28 @@ abstract class ResourceLoaderModule implements LoggerAwareInterface {
|
|||
try {
|
||||
// If the list has been modified since last time we cached it, update the cache
|
||||
if ( $localFileRefs !== $this->getFileDependencies( $context ) ) {
|
||||
$cache = ObjectCache::getLocalClusterInstance();
|
||||
$key = $cache->makeKey( __METHOD__, $this->getName() );
|
||||
$scopeLock = $cache->getScopedLock( $key, 0 );
|
||||
if ( !$scopeLock ) {
|
||||
return; // T124649; avoid write slams
|
||||
}
|
||||
|
||||
$vary = $context->getSkin() . '|' . $context->getLanguage();
|
||||
$dbw = wfGetDB( DB_MASTER );
|
||||
$dbw->replace( 'module_deps',
|
||||
array( array( 'md_module', 'md_skin' ) ), array(
|
||||
array( array( 'md_module', 'md_skin' ) ),
|
||||
array(
|
||||
'md_module' => $this->getName(),
|
||||
'md_skin' => $vary,
|
||||
// Use relative paths to avoid ghost entries when $IP changes (T111481)
|
||||
'md_deps' => FormatJson::encode( self::getRelativePaths( $localFileRefs ) ),
|
||||
)
|
||||
);
|
||||
|
||||
$dbw->onTransactionIdle( function () use ( &$scopeLock ) {
|
||||
ScopedCallback::consume( $scopeLock ); // release after commit
|
||||
} );
|
||||
}
|
||||
} catch ( Exception $e ) {
|
||||
wfDebugLog( 'resourceloader', __METHOD__ . ": failed to update DB: $e" );
|
||||
|
|
|
|||
Loading…
Reference in a new issue