From d03c5be5e3400b43317b18fcde16d86209b35014 Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Mon, 30 Nov 2015 17:10:05 -0800 Subject: [PATCH] Make HTMLCacheUpdate always use the job queue * This puts these updates behind the JobRunner lag checks * Made HTMLCacheUpdateJob::newForBacklinks() method, which, along with lazyPush(), obsoletes this class. Bug: T95501 Change-Id: I934de63bb6fe9e9b7abae157f0b3b2dbfd3188e1 --- includes/deferred/HTMLCacheUpdate.php | 20 ++----------------- includes/jobqueue/jobs/HTMLCacheUpdateJob.php | 19 +++++++++++++++++- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/includes/deferred/HTMLCacheUpdate.php b/includes/deferred/HTMLCacheUpdate.php index a480aec83a..db3790f7d3 100644 --- a/includes/deferred/HTMLCacheUpdate.php +++ b/includes/deferred/HTMLCacheUpdate.php @@ -43,24 +43,8 @@ class HTMLCacheUpdate implements DeferrableUpdate { } public function doUpdate() { - $job = new HTMLCacheUpdateJob( - $this->mTitle, - array( - 'table' => $this->mTable, - 'recursive' => true - ) + Job::newRootJobParams( // "overall" refresh links job info - "htmlCacheUpdate:{$this->mTable}:{$this->mTitle->getPrefixedText()}" - ) - ); + $job = HTMLCacheUpdateJob::newForBacklinks( $this->mTitle, $this->mTable ); - $count = $this->mTitle->getBacklinkCache()->getNumLinks( $this->mTable, 100 ); - if ( $count >= 100 ) { // many backlinks - JobQueueGroup::singleton()->lazyPush( $job ); - } else { // few backlinks ($count might be off even if 0) - $dbw = wfGetDB( DB_MASTER ); - $dbw->onTransactionIdle( function () use ( $job ) { - $job->run(); // just do the purge query now - } ); - } + JobQueueGroup::singleton()->lazyPush( $job ); } } diff --git a/includes/jobqueue/jobs/HTMLCacheUpdateJob.php b/includes/jobqueue/jobs/HTMLCacheUpdateJob.php index 6b1a1e3f4b..8cb1ca6b3d 100644 --- a/includes/jobqueue/jobs/HTMLCacheUpdateJob.php +++ b/includes/jobqueue/jobs/HTMLCacheUpdateJob.php @@ -29,7 +29,7 @@ * - a) Recursive jobs to purge caches for backlink pages for a given title. * These jobs have (recursive:true,table:) set. * - b) Jobs to purge caches for a set of titles (the job title is ignored). - * These jobs have (pages:(:(,),...) set. + * These jobs have (pages:(<page ID>:(<namespace>,<title>),...) set. * * @ingroup JobQueue */ @@ -40,6 +40,23 @@ class HTMLCacheUpdateJob extends Job { $this->removeDuplicates = ( !isset( $params['range'] ) && !isset( $params['pages'] ) ); } + /** + * @param Title $title Title to purge backlink pages from + * @param string $table Backlink table name + * @return HTMLCacheUpdateJob + */ + public static function newForBacklinks( Title $title, $table ) { + return new self( + $title, + array( + 'table' => $table, + 'recursive' => true + ) + Job::newRootJobParams( // "overall" refresh links job info + "htmlCacheUpdate:{$table}:{$title->getPrefixedText()}" + ) + ); + } + function run() { global $wgUpdateRowsPerJob, $wgUpdateRowsPerQuery; -- 2.20.1