Avoid master queries when old filter checks are viewed
authorAaron Schulz <aschulz@wikimedia.org>
Wed, 18 Jan 2017 22:39:23 +0000 (14:39 -0800)
committerAaron Schulz <aschulz@wikimedia.org>
Wed, 18 Jan 2017 22:40:38 +0000 (14:40 -0800)
Bug: T154554
Change-Id: I5ca7f0ea22c337c38083532291400df8c7db1e11

includes/page/WikiPage.php

index 920ba87..d582d51 100644 (file)
@@ -2150,8 +2150,12 @@ class WikiPage implements Page, IDBAccessObject {
                                );
                        } else {
                                // Try to avoid a second parse if {{REVISIONID}} is used
-                               $edit->popts->setSpeculativeRevIdCallback( function () {
-                                       return 1 + (int)wfGetDB( DB_MASTER )->selectField(
+                               $dbIndex = ( $this->mDataLoadedFrom & self::READ_LATEST ) === self::READ_LATEST
+                                       ? DB_MASTER // use the best possible guess
+                                       : DB_REPLICA; // T154554
+
+                               $edit->popts->setSpeculativeRevIdCallback( function () use ( $dbIndex ) {
+                                       return 1 + (int)wfGetDB( $dbIndex )->selectField(
                                                'revision',
                                                'MAX(rev_id)',
                                                [],