From: Aaron Schulz Date: Wed, 11 Nov 2015 21:50:35 +0000 (-0800) Subject: Make JobQueueAggregator::doNotifyQueueNonEmpty() avoid queries X-Git-Tag: 1.31.0-rc.0~8989 X-Git-Url: http://git.cyclocoop.org/%22%20.%20generer_url_aide%28?a=commitdiff_plain;h=08ec4d97fbf9aaa244bdfef53d7f700ad436a364;p=lhc%2Fweb%2Fwiklou.git Make JobQueueAggregator::doNotifyQueueNonEmpty() avoid queries Avoid 2 of the 3 queries in doNotifyQueueNonEmpty(), the ones that register the queue, once such a command has been done in the request already. Change-Id: I58553f0c56660f05a3e3000065270baebb8cbb62 --- diff --git a/includes/jobqueue/aggregator/JobQueueAggregatorRedis.php b/includes/jobqueue/aggregator/JobQueueAggregatorRedis.php index f8a004040b..250947a9b7 100644 --- a/includes/jobqueue/aggregator/JobQueueAggregatorRedis.php +++ b/includes/jobqueue/aggregator/JobQueueAggregatorRedis.php @@ -31,9 +31,10 @@ class JobQueueAggregatorRedis extends JobQueueAggregator { /** @var RedisConnectionPool */ protected $redisPool; - /** @var array List of Redis server addresses */ protected $servers; + /** @var bool */ + protected $registeredQueue = false; /** * @param array $params Possible keys: @@ -80,11 +81,16 @@ class JobQueueAggregatorRedis extends JobQueueAggregator { } try { $conn->multi( Redis::PIPELINE ); - $conn->hSetNx( $this->getQueueTypesKey(), $type, 'enabled' ); - $conn->sAdd( $this->getWikiSetKey(), $wiki ); + if ( !$this->registeredQueue ) { + // Make sure the queue is registered as existing + $conn->hSetNx( $this->getQueueTypesKey(), $type, 'enabled' ); + $conn->sAdd( $this->getWikiSetKey(), $wiki ); + } $conn->hSet( $this->getReadyQueueKey(), $this->encQueueName( $type, $wiki ), time() ); $conn->exec(); + $this->registeredQueue = true; + return true; } catch ( RedisException $e ) { $this->handleException( $conn, $e );