resourceloader: Use upsert() instead of replace() for module_deps write

This should perform better and reduce internal lock contention on the
database server.

Bug: T158105
Change-Id: I1acfb0630946283b317cb929e8d7c3b2af757ecf
This commit is contained in:
Timo Tijhof 2017-02-14 13:36:05 -08:00 committed by Krinkle
parent 71803987d3
commit e7b57d881a

View file

@ -476,14 +476,18 @@ abstract class ResourceLoaderModule implements LoggerAwareInterface {
}
$vary = $context->getSkin() . '|' . $context->getLanguage();
// Use relative paths to avoid ghost entries when $IP changes (T111481)
$deps = FormatJson::encode( self::getRelativePaths( $localFileRefs ) );
$dbw = wfGetDB( DB_MASTER );
$dbw->replace( 'module_deps',
[ [ 'md_module', 'md_skin' ] ],
$dbw->upsert( 'module_deps',
[
'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 ) ),
'md_deps' => $deps,
],
[ 'md_module', 'md_skin' ],
[
'md_deps' => $deps,
]
);