MediaWiki REL1_31
JobQueueGroup Class Reference

Class to handle enqueueing of background jobs. More...

Collaboration diagram for JobQueueGroup:

Public Member Functions

 __destruct ()
 
 ack (Job $job)
 Acknowledge that a job was completed.
 
 deduplicateRootJob (Job $job)
 Register the "root job" of a given job into the queue for de-duplication.
 
 get ( $type)
 Get the job queue object for a given queue type.
 
 getDefaultQueueTypes ()
 Get the list of default queue types.
 
 getQueueSizes ()
 Get the size of the queus for a list of job types.
 
 getQueuesWithJobs ()
 Get the list of job types that have non-empty queues.
 
 getQueueTypes ()
 Get the list of queue types.
 
 lazyPush ( $jobs)
 Buffer jobs for insertion via push() or call it now if in CLI mode.
 
 pop ( $qtype=self::TYPE_DEFAULT, $flags=0, array $blacklist=[])
 Pop a job off one of the job queues.
 
 push ( $jobs)
 Insert jobs into the respective queues of which they belong.
 
 queuesHaveJobs ( $type=self::TYPE_ANY)
 Check if there are any queues with jobs (this is cached)
 
 waitForBackups ()
 Wait for any replica DBs or backup queue servers to catch up.
 

Static Public Member Functions

static destroySingletons ()
 Destroy the singleton instances.
 
static pushLazyJobs ()
 Push all jobs buffered via lazyPush() into their respective queues.
 
static singleton ( $domain=false)
 

Public Attributes

const CACHE_VERSION = 1
 
const PROC_CACHE_TTL = 15
 
const TYPE_ANY = 2
 
const TYPE_DEFAULT = 1
 
const USE_CACHE = 1
 

Protected Member Functions

 __construct ( $domain, $readOnlyReason)
 
 getCoalescedQueues ()
 

Protected Attributes

Job[] $bufferedJobs = []
 
ProcessCacheLRU $cache
 
array $coalescedQueues
 Map of (bucket => (queue => JobQueue, types => list of types)
 
string $domain
 Wiki DB domain ID.
 
bool $invalidWiki = false
 Whether the wiki is not recognized in configuration.
 
string bool $readOnlyReason
 Read only rationale (or false if r/w)
 

Static Protected Attributes

static JobQueueGroup[] $instances = []
 

Private Member Functions

 assertValidJobs (array $jobs)
 
 getCachedConfigVar ( $name)
 

Detailed Description

Class to handle enqueueing of background jobs.

Since
1.21

Definition at line 29 of file JobQueueGroup.php.

Constructor & Destructor Documentation

◆ __construct()

JobQueueGroup::__construct ( $domain,
$readOnlyReason )
protected
Parameters
string$domainWiki DB domain ID
string | bool$readOnlyReasonRead-only reason or false

Definition at line 62 of file JobQueueGroup.php.

References $domain, $readOnlyReason, and cache.

◆ __destruct()

JobQueueGroup::__destruct ( )

Definition at line 473 of file JobQueueGroup.php.

References $type.

Member Function Documentation

◆ ack()

JobQueueGroup::ack ( Job $job)

Acknowledge that a job was completed.

Parameters
Job$job
Returns
void

Definition at line 287 of file JobQueueGroup.php.

References $job, ack(), and Job\getType().

Referenced by ack().

◆ assertValidJobs()

JobQueueGroup::assertValidJobs ( array $jobs)
private
Parameters
array$jobs
Exceptions
InvalidArgumentException

Definition at line 465 of file JobQueueGroup.php.

References $job.

Referenced by lazyPush(), and push().

◆ deduplicateRootJob()

JobQueueGroup::deduplicateRootJob ( Job $job)

Register the "root job" of a given job into the queue for de-duplication.

This should only be called right after all the new jobs have been inserted.

Parameters
Job$job
Returns
bool

Definition at line 298 of file JobQueueGroup.php.

References $job, deduplicateRootJob(), and Job\getType().

Referenced by deduplicateRootJob().

◆ destroySingletons()

◆ get()

JobQueueGroup::get ( $type)

Get the job queue object for a given queue type.

Parameters
string$type
Returns
JobQueue

Definition at line 110 of file JobQueueGroup.php.

References $domain, $readOnlyReason, $type, $wgJobTypeConf, JobQueue\factory(), and JobQueueAggregator\singleton().

◆ getCachedConfigVar()

JobQueueGroup::getCachedConfigVar ( $name)
private
Parameters
string$name
Returns
mixed

Definition at line 440 of file JobQueueGroup.php.

References $cache, $GLOBALS, $name, $value, $wgConf, WikiMap\getWikiIdFromDomain(), and WikiMap\isCurrentWikiDbDomain().

Referenced by getQueueTypes().

◆ getCoalescedQueues()

JobQueueGroup::getCoalescedQueues ( )
protected
Returns
array

Definition at line 409 of file JobQueueGroup.php.

References $coalescedQueues, $queue, $type, $wgJobTypeConf, JobQueue\factory(), and getQueueTypes().

Referenced by getQueueSizes(), and getQueuesWithJobs().

◆ getDefaultQueueTypes()

JobQueueGroup::getDefaultQueueTypes ( )

Get the list of default queue types.

Returns
array List of strings

Definition at line 332 of file JobQueueGroup.php.

References $wgJobTypesExcludedFromDefaultQueue, and getQueueTypes().

Referenced by pop(), and queuesHaveJobs().

◆ getQueueSizes()

JobQueueGroup::getQueueSizes ( )

Get the size of the queus for a list of job types.

Returns
array Map of (job type => size)

Definition at line 390 of file JobQueueGroup.php.

References $type, getCoalescedQueues(), and getQueueTypes().

◆ getQueuesWithJobs()

JobQueueGroup::getQueuesWithJobs ( )

Get the list of job types that have non-empty queues.

Returns
array List of job types that have non-empty queues

Definition at line 367 of file JobQueueGroup.php.

References $type, getCoalescedQueues(), and getQueueTypes().

Referenced by pop(), and queuesHaveJobs().

◆ getQueueTypes()

JobQueueGroup::getQueueTypes ( )

Get the list of queue types.

Returns
array List of strings

Definition at line 323 of file JobQueueGroup.php.

References getCachedConfigVar().

Referenced by getCoalescedQueues(), getDefaultQueueTypes(), getQueueSizes(), and getQueuesWithJobs().

◆ lazyPush()

JobQueueGroup::lazyPush ( $jobs)

Buffer jobs for insertion via push() or call it now if in CLI mode.

Note that pushLazyJobs() is registered as a deferred update just before DeferredUpdates::doUpdates() in MediaWiki and JobRunner classes in order to be executed as the very last deferred update (T100085, T154425).

Parameters
IJobSpecification | IJobSpecification[]$jobsA single Job or a list of Jobs
Returns
void
Since
1.26

Definition at line 196 of file JobQueueGroup.php.

References assertValidJobs(), and push().

◆ pop()

JobQueueGroup::pop ( $qtype = self::TYPE_DEFAULT,
$flags = 0,
array $blacklist = [] )

Pop a job off one of the job queues.

This pops a job off a queue as specified by $wgJobTypeConf and updates the aggregate job queue information cache as needed.

Parameters
int | string$qtypeJobQueueGroup::TYPE_* constant or job type string
int$flagsBitfield of JobQueueGroup::USE_* constants
array$blacklistList of job types to ignore
Returns
Job|bool Returns false on failure

Definition at line 244 of file JobQueueGroup.php.

References $job, $type, cache, getDefaultQueueTypes(), getQueuesWithJobs(), and pop().

Referenced by pop().

◆ push()

JobQueueGroup::push ( $jobs)

Insert jobs into the respective queues of which they belong.

This inserts the jobs into the queue specified by $wgJobTypeConf and updates the aggregate job queue information cache as needed.

Parameters
IJobSpecification | IJobSpecification[]$jobsA single Job or a list of Jobs
Exceptions
InvalidArgumentException
Returns
void

Definition at line 137 of file JobQueueGroup.php.

References $cache, $e, $job, $type, $wgJobTypesExcludedFromDefaultQueue, assertValidJobs(), cache, push(), and ProcessCacheLRU\set().

Referenced by lazyPush(), and push().

◆ pushLazyJobs()

static JobQueueGroup::pushLazyJobs ( )
static

Push all jobs buffered via lazyPush() into their respective queues.

Returns
void
Since
1.26

Definition at line 221 of file JobQueueGroup.php.

References $e.

◆ queuesHaveJobs()

JobQueueGroup::queuesHaveJobs ( $type = self::TYPE_ANY)

Check if there are any queues with jobs (this is cached)

Parameters
int$typeJobQueueGroup::TYPE_* constant
Returns
bool
Since
1.23

Definition at line 345 of file JobQueueGroup.php.

References $cache, $type, $value, ProcessCacheLRU\get(), getDefaultQueueTypes(), and getQueuesWithJobs().

◆ singleton()

static JobQueueGroup::singleton ( $domain = false)
static
Parameters
bool | string$domainWiki domain ID
Returns
JobQueueGroup

Definition at line 72 of file JobQueueGroup.php.

References $domain, $wgLocalDatabases, WikiMap\getCurrentWikiDbDomain(), WikiMap\getWikiIdFromDomain(), WikiMap\isCurrentWikiDbDomain(), and wfConfiguredReadOnlyReason().

Referenced by MediaWikiTestCase\addCoreDBData(), Job\batchInsert(), WatchedItemStore\clearUserWatchedItemsUsingJobQueue(), WikiPage\doEditUpdates(), SpecialReplaceText\doSpecialReplaceText(), CdnCacheUpdate\doUpdate(), HTMLCacheUpdate\doUpdate(), DeferredUpdates\enqueueUpdates(), CopyJobQueue\execute(), ManageJobs\execute(), ShowJobs\execute(), JobQueueAggregator\findPendingWikiQueues(), DoubleRedirectJob\fixRedirects(), ApiUpload\getChunkResult(), ApiMain\getMaxLag(), UserGroupMembership\insert(), Job\insert(), CreatePdfThumbnailsJob\insertJobs(), SiteStats\jobs(), EmailNotification\notifyOnPageChange(), ApiUpload\performUpload(), LocalFile\prerenderThumbnails(), FixDoubleRedirects\queueJobs(), LinksUpdate\queueRecursiveJobs(), LinksUpdate\queueRecursiveJobsForTable(), RenameuserSQL\rename(), ClearUserWatchlistJob\run(), EnqueueJob\run(), HTMLCacheUpdateJob\run(), NullJob\run(), RefreshLinksJob\run(), JobRunner\run(), LinksUpdateTest\runAllRelatedJobs(), DeferredUpdates\runUpdate(), RecentChange\save(), MediaWikiTestCase\teardownTestDB(), UploadFromUrlTest\testClearQueue(), SiteStatsTest\testJobsCountGetCached(), ClearUserWatchlistJobTest\testRun(), UploadFromUrlTest\testSyncDownload(), MediaWiki\triggerAsyncJobs(), and WikiPage\triggerOpportunisticLinksUpdate().

◆ waitForBackups()

JobQueueGroup::waitForBackups ( )

Wait for any replica DBs or backup queue servers to catch up.

This does nothing for certain queue classes.

Returns
void

Definition at line 309 of file JobQueueGroup.php.

References $type, $wgJobTypeConf, and waitForBackups().

Referenced by waitForBackups().

Member Data Documentation

◆ $bufferedJobs

Job [] JobQueueGroup::$bufferedJobs = []
protected

Definition at line 47 of file JobQueueGroup.php.

◆ $cache

ProcessCacheLRU JobQueueGroup::$cache
protected

Definition at line 34 of file JobQueueGroup.php.

Referenced by getCachedConfigVar(), push(), and queuesHaveJobs().

◆ $coalescedQueues

array JobQueueGroup::$coalescedQueues
protected

Map of (bucket => (queue => JobQueue, types => list of types)

Definition at line 44 of file JobQueueGroup.php.

Referenced by getCoalescedQueues().

◆ $domain

string JobQueueGroup::$domain
protected

Wiki DB domain ID.

Definition at line 37 of file JobQueueGroup.php.

Referenced by __construct(), get(), and singleton().

◆ $instances

JobQueueGroup [] JobQueueGroup::$instances = []
staticprotected

Definition at line 31 of file JobQueueGroup.php.

◆ $invalidWiki

bool JobQueueGroup::$invalidWiki = false
protected

Whether the wiki is not recognized in configuration.

Definition at line 41 of file JobQueueGroup.php.

◆ $readOnlyReason

string bool JobQueueGroup::$readOnlyReason
protected

Read only rationale (or false if r/w)

Definition at line 39 of file JobQueueGroup.php.

Referenced by __construct(), and get().

◆ CACHE_VERSION

const JobQueueGroup::CACHE_VERSION = 1

Definition at line 56 of file JobQueueGroup.php.

◆ PROC_CACHE_TTL

const JobQueueGroup::PROC_CACHE_TTL = 15

Definition at line 54 of file JobQueueGroup.php.

◆ TYPE_ANY

const JobQueueGroup::TYPE_ANY = 2

Definition at line 50 of file JobQueueGroup.php.

◆ TYPE_DEFAULT

const JobQueueGroup::TYPE_DEFAULT = 1

Definition at line 49 of file JobQueueGroup.php.

Referenced by JobRunner\run(), and MediaWiki\triggerAsyncJobs().

◆ USE_CACHE

const JobQueueGroup::USE_CACHE = 1

Definition at line 52 of file JobQueueGroup.php.

Referenced by JobRunner\run().


The documentation for this class was generated from the following file: