From: Aaron Schulz Date: Mon, 6 Apr 2015 23:22:10 +0000 (-0700) Subject: Made replaceSectionContent try to use DB_SLAVE X-Git-Tag: 1.31.0-rc.0~11817^2 X-Git-Url: https://git.cyclocoop.org/%242?a=commitdiff_plain;h=ea21dc244eb0c3ecd796d20022494cbe3d24ccb1;p=lhc%2Fweb%2Fwiklou.git Made replaceSectionContent try to use DB_SLAVE Bug: T92357 Change-Id: I1626280c863a46d49215cc384e207458b2f8ec39 --- 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(); }