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
class JobQueueAggregatorRedis extends JobQueueAggregator {
/** @var RedisConnectionPool */
protected $redisPool;
class JobQueueAggregatorRedis extends JobQueueAggregator {
/** @var RedisConnectionPool */
protected $redisPool;
/** @var array List of Redis server addresses */
protected $servers;
/** @var array List of Redis server addresses */
protected $servers;
+ /** @var bool */
+ protected $registeredQueue = false;
/**
* @param array $params Possible keys:
/**
* @param array $params Possible keys:
}
try {
$conn->multi( Redis::PIPELINE );
}
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();
$conn->hSet( $this->getReadyQueueKey(), $this->encQueueName( $type, $wiki ), time() );
$conn->exec();
+ $this->registeredQueue = true;
+
return true;
} catch ( RedisException $e ) {
$this->handleException( $conn, $e );
return true;
} catch ( RedisException $e ) {
$this->handleException( $conn, $e );