X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fjob%2FJobQueue.php;h=17a1338f6704fde5570ef308629c3ab17a659f23;hb=aca92231392c9664f13358c587cbfee568a5d19d;hp=09ca67c3458bac6787466efc54f7d437e7ea1050;hpb=757fb8071a7f24db5ed82910028fceaa6c8fd1ee;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/job/JobQueue.php b/includes/job/JobQueue.php index 09ca67c345..17a1338f67 100644 --- a/includes/job/JobQueue.php +++ b/includes/job/JobQueue.php @@ -238,6 +238,30 @@ abstract class JobQueue { return 0; // not implemented } + /** + * Get the number of acquired jobs that can no longer be attempted. + * Queue classes should use caching if they are any slower without memcached. + * + * If caching is used, this number might be out of date for a minute. + * + * @return integer + * @throws MWException + */ + final public function getAbandonedCount() { + wfProfileIn( __METHOD__ ); + $res = $this->doGetAbandonedCount(); + wfProfileOut( __METHOD__ ); + return $res; + } + + /** + * @see JobQueue::getAbandonedCount() + * @return integer + */ + protected function doGetAbandonedCount() { + return 0; // not implemented + } + /** * Push a single jobs into the queue. * This does not require $wgJobClasses to be set for the given job type. @@ -403,12 +427,11 @@ abstract class JobQueue { protected function doDeduplicateRootJob( Job $job ) { global $wgMemc; - $params = $job->getParams(); - if ( !isset( $params['rootJobSignature'] ) ) { - throw new MWException( "Cannot register root job; missing 'rootJobSignature'." ); - } elseif ( !isset( $params['rootJobTimestamp'] ) ) { - throw new MWException( "Cannot register root job; missing 'rootJobTimestamp'." ); + if ( !$job->hasRootJobParams() ) { + throw new MWException( "Cannot register root job; missing parameters." ); } + $params = $job->getRootJobParams(); + $key = $this->getRootJobCacheKey( $params['rootJobSignature'] ); // Callers should call batchInsert() and then this function so that if the insert // fails, the de-duplication registration will be aborted. Since the insert is @@ -449,13 +472,10 @@ abstract class JobQueue { protected function doIsRootJobOldDuplicate( Job $job ) { global $wgMemc; - $params = $job->getParams(); - if ( !isset( $params['rootJobSignature'] ) ) { + if ( !$job->hasRootJobParams() ) { return false; // job has no de-deplication info - } elseif ( !isset( $params['rootJobTimestamp'] ) ) { - trigger_error( "Cannot check root job; missing 'rootJobTimestamp'." ); - return false; } + $params = $job->getRootJobParams(); // Get the last time this root job was enqueued $timestamp = $wgMemc->get( $this->getRootJobCacheKey( $params['rootJobSignature'] ) ); @@ -543,7 +563,7 @@ abstract class JobQueue { * This does not include jobs that are currently acquired or delayed. * This should only be called on a queue that is no longer being popped. * - * @return Iterator|Traversable|Array + * @return Iterator * @throws MWException */ abstract public function getAllQueuedJobs(); @@ -552,12 +572,12 @@ abstract class JobQueue { * Get an iterator to traverse over all delayed jobs in this queue. * This should only be called on a queue that is no longer being popped. * - * @return Iterator|Traversable|Array + * @return Iterator * @throws MWException * @since 1.22 */ public function getAllDelayedJobs() { - return array(); // not implemented + return new ArrayIterator( array() ); // not implemented } /**