From 6efee6f0dbe9340badbc973aa5fab8413f35a6a6 Mon Sep 17 00:00:00 2001 From: Brad Jorsch Date: Mon, 8 May 2017 14:00:26 -0400 Subject: [PATCH] MessageCache: Avoid 'contributions' replicas On WMF wikis, the partitioning of the revision table on the 'contributions' replicas makes the query here perform really poorly. Specify 'api' as a hack for now to avoid those replicas. This query happens once per day per wiki, plus when someone edits the MediaWiki namespace, so it shouldn't be much additional load. Bug: T164666 Change-Id: I5ae74d1702144f6475e9cfb13effc43389d66233 --- includes/cache/MessageCache.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/includes/cache/MessageCache.php b/includes/cache/MessageCache.php index c992112068..8f88ee9e10 100644 --- a/includes/cache/MessageCache.php +++ b/includes/cache/MessageCache.php @@ -464,7 +464,11 @@ class MessageCache { protected function loadFromDB( $code, $mode = null ) { global $wgMaxMsgCacheEntrySize, $wgLanguageCode, $wgAdaptiveMessageCache; - $dbr = wfGetDB( ( $mode == self::FOR_UPDATE ) ? DB_MASTER : DB_REPLICA ); + // (T164666) The query here performs really poorly on WMF's + // contributions replicas. We don't have a way to say "any group except + // contributions", so for the moment let's specify 'api'. + // @todo: Get rid of this hack. + $dbr = wfGetDB( ( $mode == self::FOR_UPDATE ) ? DB_MASTER : DB_REPLICA, 'api' ); $cache = []; -- 2.20.1