diff options
Diffstat (limited to 'includes/jobqueue/jobs/HTMLCacheUpdateJob.php')
-rw-r--r-- | includes/jobqueue/jobs/HTMLCacheUpdateJob.php | 46 |
1 files changed, 12 insertions, 34 deletions
diff --git a/includes/jobqueue/jobs/HTMLCacheUpdateJob.php b/includes/jobqueue/jobs/HTMLCacheUpdateJob.php index 4d1e72c9..e5e521c3 100644 --- a/includes/jobqueue/jobs/HTMLCacheUpdateJob.php +++ b/includes/jobqueue/jobs/HTMLCacheUpdateJob.php @@ -18,6 +18,7 @@ * http://www.gnu.org/copyleft/gpl.html * * @file + * @ingroup JobQueue * @ingroup Cache */ @@ -26,9 +27,9 @@ * * This job comes in a few variants: * - a) Recursive jobs to purge caches for backlink pages for a given title. - * These jobs have have (recursive:true,table:<table>) set. + * These jobs have (recursive:true,table:<table>) set. * - b) Jobs to purge caches for a set of titles (the job title is ignored). - * These jobs have have (pages:(<page ID>:(<namespace>,<title>),...) set. + * These jobs have (pages:(<page ID>:(<namespace>,<title>),...) set. * * @ingroup JobQueue */ @@ -42,17 +43,8 @@ class HTMLCacheUpdateJob extends Job { function run() { global $wgUpdateRowsPerJob, $wgUpdateRowsPerQuery; - static $expected = array( 'recursive', 'pages' ); // new jobs have one of these - - $oldRangeJob = false; - if ( !array_intersect( array_keys( $this->params ), $expected ) ) { - // B/C for older job params formats that lack these fields: - // a) base jobs with just ("table") and b) range jobs with ("table","start","end") - if ( isset( $this->params['start'] ) && isset( $this->params['end'] ) ) { - $oldRangeJob = true; - } else { - $this->params['recursive'] = true; // base job - } + if ( isset( $this->params['table'] ) && !isset( $this->params['pages'] ) ) { + $this->params['recursive'] = true; // b/c; base job } // Job to purge all (or a range of) backlink pages for a page @@ -67,29 +59,15 @@ class HTMLCacheUpdateJob extends Job { array( 'params' => $this->getRootJobParams() ) ); JobQueueGroup::singleton()->push( $jobs ); - // Job to purge pages for for a set of titles + // Job to purge pages for a set of titles } elseif ( isset( $this->params['pages'] ) ) { $this->invalidateTitles( $this->params['pages'] ); - // B/C for job to purge a range of backlink pages for a given page - } elseif ( $oldRangeJob ) { - $titleArray = $this->title->getBacklinkCache()->getLinks( - $this->params['table'], $this->params['start'], $this->params['end'] ); - - $pages = array(); // same format BacklinkJobUtils uses - foreach ( $titleArray as $tl ) { - $pages[$tl->getArticleId()] = array( $tl->getNamespace(), $tl->getDbKey() ); - } - - $jobs = array(); - foreach ( array_chunk( $pages, $wgUpdateRowsPerJob ) as $pageChunk ) { - $jobs[] = new HTMLCacheUpdateJob( $this->title, - array( - 'table' => $this->params['table'], - 'pages' => $pageChunk - ) + $this->getRootJobParams() // carry over information for de-duplication - ); - } - JobQueueGroup::singleton()->push( $jobs ); + // Job to update a single title + } else { + $t = $this->title; + $this->invalidateTitles( array( + $t->getArticleID() => array( $t->getNamespace(), $t->getDBkey() ) + ) ); } return true; |