MediaWiki master
|
Enqueue and run background jobs via a federated queue, for wiki farms. More...
Inherits MediaWiki\JobQueue\JobQueue.
Public Member Functions | |
getAllAbandonedJobs () | |
Get an iterator to traverse over all abandoned jobs in this queue. | |
getAllAcquiredJobs () | |
Get an iterator to traverse over all claimed jobs in this queue. | |
getAllDelayedJobs () | |
Get an iterator to traverse over all delayed jobs in this queue. | |
getAllQueuedJobs () | |
Get an iterator to traverse over all available jobs in this queue. | |
getCoalesceLocationInternal () | |
Do not use this function outside of JobQueue/JobQueueGroup. | |
![]() | |
ack (RunnableJob $job) | |
Acknowledge that a job was completed. | |
batchPush (array $jobs, $flags=0) | |
Push a batch of jobs into the queue. | |
deduplicateRootJob (IJobSpecification $job) | |
Register the "root job" of a given job into the queue for de-duplication. | |
delayedJobsEnabled () | |
delete () | |
Delete all unclaimed and delayed jobs from the queue. | |
flushCaches () | |
Clear any process and persistent caches. | |
getAbandonedCount () | |
Get the number of acquired jobs that can no longer be attempted. | |
getAcquiredCount () | |
Get the number of acquired jobs (these are temporarily out of the queue). | |
getDelayedCount () | |
Get the number of delayed jobs (these are temporarily out of the queue). | |
getDomain () | |
getOrder () | |
getReadOnlyReason () | |
getSiblingQueueSizes (array $types) | |
Check the size of each of the given queues. | |
getSiblingQueuesWithJobs (array $types) | |
Check whether each of the given queues are empty. | |
getSize () | |
Get the number of available (unacquired, non-delayed) jobs in the queue. | |
getType () | |
isEmpty () | |
Quickly check if the queue has no available (unacquired, non-delayed) jobs. | |
pop () | |
Pop a job off of the queue. | |
push ( $jobs, $flags=0) | |
Push one or more jobs into the queue. | |
waitForBackups () | |
Wait for any replica DBs or backup servers to catch up. | |
Protected Member Functions | |
__construct (array $params) | |
doAck (RunnableJob $job) | |
doBatchPush (array $jobs, $flags) | |
doDeduplicateRootJob (IJobSpecification $job) | |
doDelete () | |
doFlushCaches () | |
doGetAbandonedCount () | |
doGetAcquiredCount () | |
doGetDelayedCount () | |
doGetSiblingQueueSizes (array $types) | |
doGetSiblingQueuesWithJobs (array $types) | |
doGetSize () | |
doIsEmpty () | |
doIsRootJobOldDuplicate (IJobSpecification $job) | |
doPop () | |
doWaitForBackups () | |
getCrossPartitionSum ( $type, $method) | |
logException (Exception $e) | |
optimalOrder () | |
Get the default queue order to use if configuration does not specify one. | |
supportedOrders () | |
Get the allowed queue orders for configuration validation. | |
supportsDelayedJobs () | |
Find out if delayed jobs are supported for configuration validation. | |
throwErrorIfAllPartitionsDown ( $down) | |
Throw an error if no partitions available. | |
tryJobInsertions (array $jobs, HashRing &$partitionRing, $flags) | |
![]() | |
assertNotReadOnly () | |
factoryJob ( $command, $params) | |
getRootJobCacheKey ( $signature, $type) | |
incrStats ( $event, $type, $delta=1) | |
Call StatsFactory::incrementBy() for the queue overall and for the queue type. | |
isRootJobOldDuplicate (IJobSpecification $job) | |
Check if the "root" job of a given job has been superseded by a newer one. | |
supportsTypeAgnostic () | |
Subclasses should set this to true if they support type agnostic queues. | |
Protected Attributes | |
int | $maxPartitionsTry |
Maximum number of partitions to try. | |
JobQueue[] | $partitionQueues = [] |
(partition name => JobQueue) reverse sorted by weight | |
HashRing | $partitionRing |
![]() | |
int | $claimTTL |
Time to live in seconds. | |
string | $domain |
DB domain ID. | |
GlobalIdGenerator | $idGenerator |
int | $maxTries |
Maximum number of times to try a job. | |
string | $order |
Job priority for pop() | |
string false | $readOnlyReason |
Read only rationale (or false if r/w) | |
StatsFactory | $stats |
string | $type |
Job type. | |
bool | $typeAgnostic |
WANObjectCache | $wanCache |
const | QOS_ATOMIC = 1 |
const | ROOTJOB_TTL = 28 * 24 * 3600 |
Additional Inherited Members | |
![]() | |
static | factory (array $params) |
Get a job queue object of the specified type. | |
Enqueue and run background jobs via a federated queue, for wiki farms.
This class allows for queues to be partitioned into smaller queues. A partition is defined by the configuration for a JobQueue instance. For example, one can set $wgJobTypeConf['refreshLinks'] to point to a JobQueueFederated instance, which itself would consist of three JobQueueRedis instances, each using their own redis server. This would allow for the jobs to be split (evenly or based on weights) across multiple servers if a single server becomes impractical or expensive. Different JobQueue classes can be mixed.
The basic queue configuration (e.g. "order", "claimTTL") of a federated queue is inherited by the partition queues. Additional configuration defines what section each wiki is in, what partition queues each section uses (and their weight), and the JobQueue configuration for each partition. Some sections might only need a single queue partition, like the sections for groups of small wikis.
If used for performance, then $wgMainCacheType should be set to memcached/redis. Note that "fifo" cannot be used for the ordering, since the data is distributed. One can still use "timestamp" instead, as in "roughly timestamp ordered". Also, queue classes used by this should ignore down servers (with TTL) to avoid slowness.
Definition at line 56 of file JobQueueFederated.php.
|
protected |
array | $params | Possible keys:
|
Reimplemented from MediaWiki\JobQueue\JobQueue.
Definition at line 81 of file JobQueueFederated.php.
References MediaWiki\JobQueue\JobQueue\$domain, and MediaWiki\JobQueue\JobQueue\factory().
|
protected |
RunnableJob | $job |
Reimplemented from MediaWiki\JobQueue\JobQueue.
Definition at line 307 of file JobQueueFederated.php.
References $job.
|
protected |
IJobSpecification[] | $jobs | |
int | $flags |
Reimplemented from MediaWiki\JobQueue\JobQueue.
Definition at line 182 of file JobQueueFederated.php.
References MediaWiki\JobQueue\JobQueueFederated\$partitionRing, HashRing\getLiveLocationWeights(), and MediaWiki\JobQueue\JobQueueFederated\tryJobInsertions().
|
protected |
IJobSpecification | $job |
JobQueueError |
Reimplemented from MediaWiki\JobQueue\JobQueue.
Definition at line 331 of file JobQueueFederated.php.
References $job.
|
protected |
JobQueueError |
Reimplemented from MediaWiki\JobQueue\JobQueue.
Definition at line 346 of file JobQueueFederated.php.
References MediaWiki\JobQueue\JobQueueFederated\logException(), and MediaWiki\JobQueue\JobQueueFederated\throwErrorIfAllPartitionsDown().
|
protected |
Reimplemented from MediaWiki\JobQueue\JobQueue.
Definition at line 375 of file JobQueueFederated.php.
|
protected |
Reimplemented from MediaWiki\JobQueue\JobQueue.
Definition at line 157 of file JobQueueFederated.php.
References MediaWiki\JobQueue\JobQueueFederated\getCrossPartitionSum().
|
protected |
Reimplemented from MediaWiki\JobQueue\JobQueue.
Definition at line 149 of file JobQueueFederated.php.
References MediaWiki\JobQueue\JobQueueFederated\getCrossPartitionSum().
|
protected |
Reimplemented from MediaWiki\JobQueue\JobQueue.
Definition at line 153 of file JobQueueFederated.php.
References MediaWiki\JobQueue\JobQueueFederated\getCrossPartitionSum().
|
protected |
array | $types | List of queues types |
Reimplemented from MediaWiki\JobQueue\JobQueue.
Definition at line 457 of file JobQueueFederated.php.
References MediaWiki\JobQueue\JobQueue\$type, MediaWiki\JobQueue\JobQueueFederated\logException(), and MediaWiki\JobQueue\JobQueueFederated\throwErrorIfAllPartitionsDown().
|
protected |
array | $types | List of queues types |
Reimplemented from MediaWiki\JobQueue\JobQueue.
Definition at line 431 of file JobQueueFederated.php.
References MediaWiki\JobQueue\JobQueueFederated\logException(), and MediaWiki\JobQueue\JobQueueFederated\throwErrorIfAllPartitionsDown().
|
protected |
Reimplemented from MediaWiki\JobQueue\JobQueue.
Definition at line 145 of file JobQueueFederated.php.
References MediaWiki\JobQueue\JobQueueFederated\getCrossPartitionSum().
|
protected |
Reimplemented from MediaWiki\JobQueue\JobQueue.
Definition at line 129 of file JobQueueFederated.php.
References MediaWiki\JobQueue\JobQueueFederated\logException(), and MediaWiki\JobQueue\JobQueueFederated\throwErrorIfAllPartitionsDown().
|
protected |
IJobSpecification | $job |
Reimplemented from MediaWiki\JobQueue\JobQueue.
Definition at line 316 of file JobQueueFederated.php.
References $job.
|
protected |
Reimplemented from MediaWiki\JobQueue\JobQueue.
Definition at line 275 of file JobQueueFederated.php.
References $job, MediaWiki\JobQueue\JobQueueFederated\logException(), ArrayUtils\pickRandom(), and MediaWiki\JobQueue\JobQueueFederated\throwErrorIfAllPartitionsDown().
|
protected |
Reimplemented from MediaWiki\JobQueue\JobQueue.
Definition at line 361 of file JobQueueFederated.php.
References MediaWiki\JobQueue\JobQueueFederated\logException(), and MediaWiki\JobQueue\JobQueueFederated\throwErrorIfAllPartitionsDown().
MediaWiki\JobQueue\JobQueueFederated::getAllAbandonedJobs | ( | ) |
Get an iterator to traverse over all abandoned jobs in this queue.
JobQueueError |
Reimplemented from MediaWiki\JobQueue\JobQueue.
Definition at line 415 of file JobQueueFederated.php.
MediaWiki\JobQueue\JobQueueFederated::getAllAcquiredJobs | ( | ) |
Get an iterator to traverse over all claimed jobs in this queue.
Callers should be quick to iterator over it or few results will be returned due to jobs being acknowledged and deleted
JobQueueError |
Reimplemented from MediaWiki\JobQueue\JobQueue.
Definition at line 404 of file JobQueueFederated.php.
MediaWiki\JobQueue\JobQueueFederated::getAllDelayedJobs | ( | ) |
Get an iterator to traverse over all delayed jobs in this queue.
Note: results may be stale if the queue is concurrently modified.
JobQueueError |
Reimplemented from MediaWiki\JobQueue\JobQueue.
Definition at line 393 of file JobQueueFederated.php.
MediaWiki\JobQueue\JobQueueFederated::getAllQueuedJobs | ( | ) |
Get an iterator to traverse over all available jobs in this queue.
This does not include jobs that are currently acquired or delayed. Note: results may be stale if the queue is concurrently modified.
JobQueueError |
Reimplemented from MediaWiki\JobQueue\JobQueue.
Definition at line 382 of file JobQueueFederated.php.
MediaWiki\JobQueue\JobQueueFederated::getCoalesceLocationInternal | ( | ) |
Do not use this function outside of JobQueue/JobQueueGroup.
Reimplemented from MediaWiki\JobQueue\JobQueue.
Definition at line 426 of file JobQueueFederated.php.
|
protected |
string | $type | |
string | $method |
Definition at line 166 of file JobQueueFederated.php.
References MediaWiki\JobQueue\JobQueueFederated\logException(), and MediaWiki\JobQueue\JobQueueFederated\throwErrorIfAllPartitionsDown().
Referenced by MediaWiki\JobQueue\JobQueueFederated\doGetAbandonedCount(), MediaWiki\JobQueue\JobQueueFederated\doGetAcquiredCount(), MediaWiki\JobQueue\JobQueueFederated\doGetDelayedCount(), and MediaWiki\JobQueue\JobQueueFederated\doGetSize().
|
protected |
Definition at line 481 of file JobQueueFederated.php.
References wfDebugLog().
Referenced by MediaWiki\JobQueue\JobQueueFederated\doDelete(), MediaWiki\JobQueue\JobQueueFederated\doGetSiblingQueueSizes(), MediaWiki\JobQueue\JobQueueFederated\doGetSiblingQueuesWithJobs(), MediaWiki\JobQueue\JobQueueFederated\doIsEmpty(), MediaWiki\JobQueue\JobQueueFederated\doPop(), MediaWiki\JobQueue\JobQueueFederated\doWaitForBackups(), MediaWiki\JobQueue\JobQueueFederated\getCrossPartitionSum(), and MediaWiki\JobQueue\JobQueueFederated\tryJobInsertions().
|
protected |
Get the default queue order to use if configuration does not specify one.
Reimplemented from MediaWiki\JobQueue\JobQueue.
Definition at line 115 of file JobQueueFederated.php.
|
protected |
Get the allowed queue orders for configuration validation.
Reimplemented from MediaWiki\JobQueue\JobQueue.
Definition at line 110 of file JobQueueFederated.php.
|
protected |
Find out if delayed jobs are supported for configuration validation.
Reimplemented from MediaWiki\JobQueue\JobQueue.
Definition at line 119 of file JobQueueFederated.php.
|
protected |
Throw an error if no partitions available.
int | $down | The number of up partitions down |
JobQueueError |
Definition at line 492 of file JobQueueFederated.php.
Referenced by MediaWiki\JobQueue\JobQueueFederated\doDelete(), MediaWiki\JobQueue\JobQueueFederated\doGetSiblingQueueSizes(), MediaWiki\JobQueue\JobQueueFederated\doGetSiblingQueuesWithJobs(), MediaWiki\JobQueue\JobQueueFederated\doIsEmpty(), MediaWiki\JobQueue\JobQueueFederated\doPop(), MediaWiki\JobQueue\JobQueueFederated\doWaitForBackups(), and MediaWiki\JobQueue\JobQueueFederated\getCrossPartitionSum().
|
protected |
array | $jobs | |
HashRing | &$partitionRing | |
int | $flags |
JobQueueError |
Definition at line 209 of file JobQueueFederated.php.
References $job, MediaWiki\JobQueue\JobQueueFederated\$partitionRing, HashRing\ejectFromLiveRing(), HashRing\getLiveLocation(), HashRing\getLiveLocationWeights(), MediaWiki\JobQueue\JobQueueFederated\logException(), and ArrayUtils\pickRandom().
Referenced by MediaWiki\JobQueue\JobQueueFederated\doBatchPush().
|
protected |
Maximum number of partitions to try.
Definition at line 63 of file JobQueueFederated.php.
|
protected |
(partition name => JobQueue) reverse sorted by weight
Definition at line 60 of file JobQueueFederated.php.
|
protected |
Definition at line 58 of file JobQueueFederated.php.
Referenced by MediaWiki\JobQueue\JobQueueFederated\doBatchPush(), and MediaWiki\JobQueue\JobQueueFederated\tryJobInsertions().