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:
}
try {
$conn->multi( Redis::PIPELINE );
- $conn->hSetNx( $this->getQueueTypesKey(), $type, 'enabled' );
+ 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 );
return "jobqueue:aggregator:h-queue-types:v2"; // global
}
+ /**
+ * @return string
+ */
+ private function getWikiSetKey() {
+ return "jobqueue:aggregator:s-wikis:v2"; // global
+ }
+
/**
* @param string $type
* @param string $wiki