Add missing transaction round commit calls to RefreshLinksJob
authorAaron Schulz <aschulz@wikimedia.org>
Thu, 4 Apr 2019 23:25:00 +0000 (16:25 -0700)
committerAaron Schulz <aschulz@wikimedia.org>
Thu, 4 Apr 2019 23:25:40 +0000 (16:25 -0700)
Follow-up to 83933a436e1ee9d

Bug: T220037
Change-Id: Ib1ac31365f9c325c56bae11aefe825ad2b2be881

includes/jobqueue/jobs/RefreshLinksJob.php

index 0cfaebe..b1c805b 100644 (file)
@@ -157,6 +157,7 @@ class RefreshLinksJob extends Job {
                /** @noinspection PhpUnusedLocalVariableInspection */
                $scopedLock = LinksUpdate::acquirePageLock( $dbw, $page->getId(), 'job' );
                if ( $scopedLock === null ) {
+                       $lbFactory->commitMasterChanges( __METHOD__ );
                        // Another job is already updating the page, likely for an older revision (T170596).
                        $this->setLastError( 'LinksUpdate already running for this page, try again later.' );
                        return false;
@@ -179,10 +180,12 @@ class RefreshLinksJob extends Job {
                }
 
                if ( !$revision ) {
+                       $lbFactory->commitMasterChanges( __METHOD__ );
                        $stats->increment( 'refreshlinks.rev_not_found' );
                        $this->setLastError( "Revision not found for {$title->getPrefixedDBkey()}" );
                        return false; // just deleted?
                } elseif ( $revision->getId() != $latest || $revision->getPageId() !== $page->getId() ) {
+                       $lbFactory->commitMasterChanges( __METHOD__ );
                        // Do not clobber over newer updates with older ones. If all jobs where FIFO and
                        // serialized, it would be OK to update links based on older revisions since it
                        // would eventually get to the latest. Since that is not the case (by design),
@@ -212,6 +215,7 @@ class RefreshLinksJob extends Job {
                        }
 
                        if ( $page->getLinksTimestamp() > $skewedTimestamp ) {
+                               $lbFactory->commitMasterChanges( __METHOD__ );
                                // Something already updated the backlinks since this job was made
                                $stats->increment( 'refreshlinks.update_skipped' );
                                return true;