From ea21dc244eb0c3ecd796d20022494cbe3d24ccb1 Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Mon, 6 Apr 2015 16:22:10 -0700 Subject: [PATCH] Made replaceSectionContent try to use DB_SLAVE Bug: T92357 Change-Id: I1626280c863a46d49215cc384e207458b2f8ec39 --- includes/page/WikiPage.php | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/includes/page/WikiPage.php b/includes/page/WikiPage.php index b435c5cf0c..eb8532f3cc 100644 --- a/includes/page/WikiPage.php +++ b/includes/page/WikiPage.php @@ -1513,8 +1513,18 @@ class WikiPage implements Page, IDBAccessObject { $baseRevId = null; if ( $edittime && $sectionId !== 'new' ) { - $dbw = wfGetDB( DB_MASTER ); - $rev = Revision::loadFromTimestamp( $dbw, $this->mTitle, $edittime ); + $dbr = wfGetDB( DB_SLAVE ); + $rev = Revision::loadFromTimestamp( $dbr, $this->mTitle, $edittime ); + // Try the master if this thread may have just added it. + // This could be abstracted into a Revision method, but we don't want + // to encourage loading of revisions by timestamp. + if ( !$rev + && wfGetLB()->getServerCount() > 1 + && wfGetLB()->hasOrMadeRecentMasterChanges() + ) { + $dbw = wfGetDB( DB_MASTER ); + $rev = Revision::loadFromTimestamp( $dbw, $this->mTitle, $edittime ); + } if ( $rev ) { $baseRevId = $rev->getId(); } -- 2.20.1