From 83933a436e1ee9d3eaaa4ac86f9997d3b469f959 Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Thu, 28 Mar 2019 18:59:42 -0700 Subject: [PATCH] Make RefreshLinksJob run DataUpdates such that they have outer scope This is how DeferrableUpdates are supposed to run as documented. Change-Id: Ie4fb8c9a64b94bc2422d7e51391998315f4eeddb --- includes/jobqueue/jobs/RefreshLinksJob.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/includes/jobqueue/jobs/RefreshLinksJob.php b/includes/jobqueue/jobs/RefreshLinksJob.php index 7f9b2a3670..0cfaebea71 100644 --- a/includes/jobqueue/jobs/RefreshLinksJob.php +++ b/includes/jobqueue/jobs/RefreshLinksJob.php @@ -54,6 +54,8 @@ class RefreshLinksJob extends Job { !( isset( $params['pages'] ) && count( $params['pages'] ) != 1 ) ); $this->params += [ 'causeAction' => 'unknown', 'causeAgent' => 'unknown' ]; + // This will control transaction rounds in order to run DataUpdates + $this->executionFlags |= self::JOB_NO_EXPLICIT_TRX_ROUND; } /** @@ -145,6 +147,8 @@ class RefreshLinksJob extends Job { $renderer = $services->getRevisionRenderer(); $ticket = $lbFactory->getEmptyTransactionTicket( __METHOD__ ); + $lbFactory->beginMasterChanges( __METHOD__ ); + $page = WikiPage::factory( $title ); $page->loadPageData( WikiPage::READ_LATEST ); @@ -284,6 +288,9 @@ class RefreshLinksJob extends Job { $options['triggeringUser'] = User::newFromName( $userInfo['userName'], false ); } } + + $lbFactory->commitMasterChanges( __METHOD__ ); + $page->doSecondaryDataUpdates( $options ); InfoAction::invalidateCache( $title ); -- 2.20.1