This patch switches to using a slave but imediatly
waits for the slave to catch up with master
(so as not to miss things).
This may result in more delay between an edit and
category changes being inserted.
It may be possible to instead wait for the timestamp
that is passed in $this->params['revTimestamp']
which could result in slightly less delay.
I can't see any uses of waitForReplication in quite
this way but see no imediate reason this would not work.
Bug: T125147
Change-Id: Ia0aa722c97f41a3959bcd3cb4210b39db0c3bc45
// between COMMIT and actual enqueueing of the CategoryMembershipChangeJob job.
$cutoffUnix -= self::ENQUEUE_FUDGE_SEC;
// between COMMIT and actual enqueueing of the CategoryMembershipChangeJob job.
$cutoffUnix -= self::ENQUEUE_FUDGE_SEC;
+ $dbr = wfGetDB( DB_SLAVE, array( 'recentchanges' ) );
+ if ( !wfGetLB()->safeWaitForPos( $dbr ) ) {
+ $this->setLastError( "Timed out while waiting for slave to catch up" );
+ return false;
+ }
+
+ $dbr->commit( __METHOD__, 'flush' );
+
// Get the newest revision that has a SRC_CATEGORIZE row...
// Get the newest revision that has a SRC_CATEGORIZE row...
- $row = $dbw->selectRow(
+ $row = $dbr->selectRow(
array( 'revision', 'recentchanges' ),
array( 'rev_timestamp', 'rev_id' ),
array(
'rev_page' => $page->getId(),
array( 'revision', 'recentchanges' ),
array( 'rev_timestamp', 'rev_id' ),
array(
'rev_page' => $page->getId(),
- 'rev_timestamp >= ' . $dbw->addQuotes( $dbw->timestamp( $cutoffUnix ) )
+ 'rev_timestamp >= ' . $dbr->addQuotes( $dbr->timestamp( $cutoffUnix ) )
),
__METHOD__,
array( 'ORDER BY' => 'rev_timestamp DESC, rev_id DESC' ),
),
__METHOD__,
array( 'ORDER BY' => 'rev_timestamp DESC, rev_id DESC' ),
// Find revisions to this page made around and after this revision which lack category
// notifications in recent changes. This lets jobs pick up were the last one left off.
// Find revisions to this page made around and after this revision which lack category
// notifications in recent changes. This lets jobs pick up were the last one left off.
- $encCutoff = $dbw->addQuotes( $dbw->timestamp( $cutoffUnix ) );
- $res = $dbw->select(
+ $encCutoff = $dbr->addQuotes( $dbr->timestamp( $cutoffUnix ) );
+ $res = $dbr->select(
'revision',
Revision::selectFields(),
array(
'revision',
Revision::selectFields(),
array(