From: Aaron Schulz Date: Sat, 24 Mar 2018 13:49:14 +0000 (-0700) Subject: Use CONN_TRX_AUTO in WikiPage speculative revision ID callback X-Git-Tag: 1.34.0-rc.0~5636^2 X-Git-Url: http://git.cyclocoop.org/%28?a=commitdiff_plain;h=766cdc944b94f56e8b7c4bc793fd7b39eceb8b65;p=lhc%2Fweb%2Fwiklou.git Use CONN_TRX_AUTO in WikiPage speculative revision ID callback This increases the odds of seeing newer data and not guessing a wrong revision ID due to getting raced out between stash and save. Change-Id: Icf0f9b9c4d559f4ddf05a4ca8679e3c4dca5620a --- diff --git a/includes/page/WikiPage.php b/includes/page/WikiPage.php index d4a17c82b3..cfeb331bc9 100644 --- a/includes/page/WikiPage.php +++ b/includes/page/WikiPage.php @@ -2117,7 +2117,12 @@ class WikiPage implements Page, IDBAccessObject { : DB_REPLICA; // T154554 $edit->popts->setSpeculativeRevIdCallback( function () use ( $dbIndex ) { - return 1 + (int)wfGetDB( $dbIndex )->selectField( + $lb = MediaWikiServices::getInstance()->getDBLoadBalancer(); + // Use a fresh connection in order to see the latest data, by avoiding + // stale data from REPEATABLE-READ snapshots. + $db = $lb->getConnectionRef( $dbIndex, [], false, $lb::CONN_TRX_AUTO ); + + return 1 + (int)$db->selectField( 'revision', 'MAX(rev_id)', [],