assertRequiredOptions( self::CONSTRUCTOR_OPTIONS ); $this->instances = []; $this->options = $options; $this->readOnlyMode = $readOnlyMode; $this->statsdDataFactory = $statsdDataFactory; $this->wanCache = $wanCache; $this->globalIdGenerator = $globalIdGenerator; } /** * @since 1.37 * * @param false|string $domain Wiki domain ID. False uses the current wiki domain ID * @return JobQueueGroup */ public function makeJobQueueGroup( $domain = false ) : JobQueueGroup { if ( $domain === false ) { $domain = WikiMap::getCurrentWikiDbDomain()->getId(); } if ( !isset( $this->instances[$domain] ) ) { // Make sure jobs are not getting pushed to bogus wikis. This can confuse // the job runner system into spawning endless RPC requests that fail (T171371). $wikiId = WikiMap::getWikiIdFromDbDomain( $domain ); if ( !WikiMap::isCurrentWikiDbDomain( $domain ) && !in_array( $wikiId, $this->options->get( 'LocalDatabases' ) ) ) { $invalidDomain = true; } else { $invalidDomain = false; } $this->instances[$domain] = new JobQueueGroup( $domain, $this->readOnlyMode, $invalidDomain, $this->options->get( 'JobClasses' ), $this->options->get( 'JobTypeConf' ), $this->options->get( 'JobTypesExcludedFromDefaultQueue' ), $this->statsdDataFactory, $this->wanCache, $this->globalIdGenerator ); } return $this->instances[$domain]; } }