From 8624e261f00982564c55996fe66f097d83f0801a Mon Sep 17 00:00:00 2001 From: Marius Hoch Date: Wed, 25 Mar 2015 16:09:21 +0100 Subject: [PATCH] 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 --- includes/diff/DifferenceEngine.php | 6 ++++++ 1 file changed, 6 insertions(+) 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(), -- 2.20.1