From e7b57d881aafe6a2ae6feb8401848e618419ffd5 Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Tue, 14 Feb 2017 13:36:05 -0800 Subject: [PATCH 1/1] 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 --- includes/resourceloader/ResourceLoaderModule.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/includes/resourceloader/ResourceLoaderModule.php b/includes/resourceloader/ResourceLoaderModule.php index 8124f3398b..fd74a82818 100644 --- a/includes/resourceloader/ResourceLoaderModule.php +++ b/includes/resourceloader/ResourceLoaderModule.php @@ -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, ] ); -- 2.20.1