Fallback to read from master in DifferenceEngine::loadRevisionData
authorMarius Hoch <hoo@online.de>
Wed, 25 Mar 2015 15:09:21 +0000 (16:09 +0100)
committerMarius Hoch <hoo@online.de>
Wed, 25 Mar 2015 15:09:21 +0000 (16:09 +0100)
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

index 77bbd36..de8dd43 100644 (file)
@@ -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(),