From: Marius Hoch Date: Wed, 25 Mar 2015 15:09:21 +0000 (+0100) Subject: Fallback to read from master in DifferenceEngine::loadRevisionData X-Git-Tag: 1.31.0-rc.0~12003 X-Git-Url: http://git.cyclocoop.org/clavettes/images/siteon3.jpg?a=commitdiff_plain;h=8624e261f00982564c55996fe66f097d83f0801a;p=lhc%2Fweb%2Fwiklou.git Fallback to read from master in DifferenceEngine::loadRevisionData In DifferenceEngine we need to show a diff immediately after an edit happened if someone did a rollback. To make that work again, try loading a revision from master if we have more than one database servers and we failed loading the revision from a slave. Change-Id: I08a16faa9e637c614c6d2fc9a10536c7b41685a8 Follows: 3c2bc32ae1775f5e875958b62d7181b4b5cfe24e Bug: T93866 --- diff --git a/includes/diff/DifferenceEngine.php b/includes/diff/DifferenceEngine.php index 77bbd36ab8..de8dd43bca 100644 --- a/includes/diff/DifferenceEngine.php +++ b/includes/diff/DifferenceEngine.php @@ -1233,6 +1233,12 @@ class DifferenceEngine extends ContextSource { // Load the new revision object if ( $this->mNewid ) { $this->mNewRev = Revision::newFromId( $this->mNewid ); + + if ( !$this->mNewRev && wfGetLB()->getServerCount() > 1 ) { + // Try harder… This is being hit after a rollback where we show the + // diff immediately after the edit happened. T93866 + $this->mNewRev = Revision::newFromId( $this->mNewid, Revision::READ_LATEST ); + } } else { $this->mNewRev = Revision::newFromTitle( $this->getTitle(),