From: Aaron Schulz Date: Mon, 16 Feb 2015 22:41:31 +0000 (-0800) Subject: Removed pointless memcached JobQueueAggregator class X-Git-Tag: 1.31.0-rc.0~12209^2 X-Git-Url: http://git.cyclocoop.org/%22.%24h.%22?a=commitdiff_plain;h=b15ac8eb4873c81601d58d9980b59e3f07018652;p=lhc%2Fweb%2Fwiklou.git Removed pointless memcached JobQueueAggregator class * On a basic/default install there is only a single wiki and nothing uses this. Larger wikis would want to use redis. Change-Id: Ie5bf1a644ae60b2c6ca72b165fa5510113717611 --- diff --git a/autoload.php b/autoload.php index 01dba44784..d0139d9051 100644 --- a/autoload.php +++ b/autoload.php @@ -564,7 +564,7 @@ $wgAutoloadLocalClasses = array( 'Job' => __DIR__ . '/includes/jobqueue/Job.php', 'JobQueue' => __DIR__ . '/includes/jobqueue/JobQueue.php', 'JobQueueAggregator' => __DIR__ . '/includes/jobqueue/aggregator/JobQueueAggregator.php', - 'JobQueueAggregatorMemc' => __DIR__ . '/includes/jobqueue/aggregator/JobQueueAggregatorMemc.php', + 'JobQueueAggregatorNull' => __DIR__ . '/includes/jobqueue/aggregator/JobQueueAggregator.php', 'JobQueueAggregatorRedis' => __DIR__ . '/includes/jobqueue/aggregator/JobQueueAggregatorRedis.php', 'JobQueueConnectionError' => __DIR__ . '/includes/jobqueue/JobQueue.php', 'JobQueueDB' => __DIR__ . '/includes/jobqueue/JobQueueDB.php', diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index d4cdf9e8c8..361a8da0fe 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -6464,7 +6464,7 @@ $wgJobTypeConf = array( * These settings should be global to all wikis. */ $wgJobQueueAggregator = array( - 'class' => 'JobQueueAggregatorMemc' + 'class' => 'JobQueueAggregatorNull' ); /** diff --git a/includes/jobqueue/aggregator/JobQueueAggregator.php b/includes/jobqueue/aggregator/JobQueueAggregator.php index bd5c40d863..4c2dfadf30 100644 --- a/includes/jobqueue/aggregator/JobQueueAggregator.php +++ b/includes/jobqueue/aggregator/JobQueueAggregator.php @@ -152,3 +152,21 @@ abstract class JobQueueAggregator { return $pendingDBs; } } + +class JobQueueAggregatorNull extends JobQueueAggregator { + protected function doNotifyQueueEmpty( $wiki, $type ) { + return true; + } + + protected function doNotifyQueueNonEmpty( $wiki, $type ) { + return true; + } + + protected function doGetAllReadyWikiQueues() { + return array(); + } + + protected function doPurge() { + return true; + } +} \ No newline at end of file diff --git a/includes/jobqueue/aggregator/JobQueueAggregatorMemc.php b/includes/jobqueue/aggregator/JobQueueAggregatorMemc.php deleted file mode 100644 index ae266ef384..0000000000 --- a/includes/jobqueue/aggregator/JobQueueAggregatorMemc.php +++ /dev/null @@ -1,125 +0,0 @@ -cache = isset( $params['objectCache'] ) - ? wfGetCache( $params['objectCache'] ) - : wfGetMainCache(); - $this->cacheTTL = isset( $params['cacheTTL'] ) ? $params['cacheTTL'] : 180; // 3 min - } - - /** - * @see JobQueueAggregator::doNotifyQueueEmpty() - */ - protected function doNotifyQueueEmpty( $wiki, $type ) { - $key = $this->getReadyQueueCacheKey(); - // Delist the queue from the "ready queue" list - if ( $this->cache->add( "$key:lock", 1, 60 ) ) { // lock - $curInfo = $this->cache->get( $key ); - if ( is_array( $curInfo ) && isset( $curInfo['pendingDBs'][$type] ) ) { - if ( in_array( $wiki, $curInfo['pendingDBs'][$type] ) ) { - $curInfo['pendingDBs'][$type] = array_diff( - $curInfo['pendingDBs'][$type], array( $wiki ) ); - $this->cache->set( $key, $curInfo ); - } - } - $this->cache->delete( "$key:lock" ); // unlock - } - - return true; - } - - /** - * @see JobQueueAggregator::doNotifyQueueNonEmpty() - */ - protected function doNotifyQueueNonEmpty( $wiki, $type ) { - return true; // updated periodically - } - - /** - * @see JobQueueAggregator::doAllGetReadyWikiQueues() - */ - protected function doGetAllReadyWikiQueues() { - $key = $this->getReadyQueueCacheKey(); - // If the cache entry wasn't present, is stale, or in .1% of cases otherwise, - // regenerate the cache. Use any available stale cache if another process is - // currently regenerating the pending DB information. - $pendingDbInfo = $this->cache->get( $key ); - if ( !is_array( $pendingDbInfo ) - || ( time() - $pendingDbInfo['timestamp'] ) > $this->cacheTTL - || mt_rand( 0, 999 ) == 0 - ) { - if ( $this->cache->add( "$key:rebuild", 1, 1800 ) ) { // lock - $pendingDbInfo = array( - 'pendingDBs' => $this->findPendingWikiQueues(), - 'timestamp' => time() - ); - for ( $attempts = 1; $attempts <= 25; ++$attempts ) { - if ( $this->cache->add( "$key:lock", 1, 60 ) ) { // lock - $this->cache->set( $key, $pendingDbInfo ); - $this->cache->delete( "$key:lock" ); // unlock - break; - } - } - $this->cache->delete( "$key:rebuild" ); // unlock - } - } - - return is_array( $pendingDbInfo ) - ? $pendingDbInfo['pendingDBs'] - : array(); // cache is both empty and locked - } - - /** - * @see JobQueueAggregator::doPurge() - */ - protected function doPurge() { - return $this->cache->delete( $this->getReadyQueueCacheKey() ); - } - - /** - * @return string - */ - private function getReadyQueueCacheKey() { - return "jobqueue:aggregator:ready-queues:v1"; // global - } -}