IJobSpecification[]) */ private $jobsByDomain; /** * @param string $domain DB domain ID * @param IJobSpecification[] $jobs */ public function __construct( $domain, array $jobs ) { $this->jobsByDomain[$domain] = $jobs; } public function merge( MergeableUpdate $update ) { /** @var self $update */ Assert::parameterType( __CLASS__, $update, '$update' ); '@phan-var self $update'; foreach ( $update->jobsByDomain as $domain => $jobs ) { $this->jobsByDomain[$domain] = $this->jobsByDomain[$domain] ?? []; $this->jobsByDomain[$domain] = array_merge( $this->jobsByDomain[$domain], $jobs ); } } public function doUpdate() { foreach ( $this->jobsByDomain as $domain => $jobs ) { $group = JobQueueGroup::singleton( $domain ); try { $group->push( $jobs ); } catch ( Exception $e ) { // Get in as many jobs as possible and let other post-send updates happen MWExceptionHandler::logException( $e ); } } } }