diff --git a/includes/job/JobQueue.php b/includes/job/JobQueue.php index 17f6648fc27..6cdc9482311 100644 --- a/includes/job/JobQueue.php +++ b/includes/job/JobQueue.php @@ -36,6 +36,8 @@ abstract class JobQueue { const QoS_Atomic = 1; // integer; "all-or-nothing" job insertions + const MAX_ATTEMPTS = 3; // integer; number of times to try a job + /** * @param $params array */ @@ -61,7 +63,9 @@ abstract class JobQueue { * If "random" is used, pop() will pick jobs in random order. This might be * useful for improving concurrency depending on the queue storage medium. * - claimTTL : If supported, the queue will recycle jobs that have been popped - * but not acknowledged as completed after this many seconds. + * but not acknowledged as completed after this many seconds. Recycling + * of jobs simple means re-inserting them into the queue. Jobs can be + * attempted up to three times before being discarded. * * Queue classes should throw an exception if they do not support the options given. * diff --git a/includes/job/JobQueueDB.php b/includes/job/JobQueueDB.php index 1c9c8a74c54..99a517e68fb 100644 --- a/includes/job/JobQueueDB.php +++ b/includes/job/JobQueueDB.php @@ -31,7 +31,6 @@ class JobQueueDB extends JobQueue { const CACHE_TTL_SHORT = 30; // integer; seconds to cache info without re-validating const CACHE_TTL_LONG = 300; // integer; seconds to cache info that is kept up to date const MAX_AGE_PRUNE = 604800; // integer; seconds a job can live once claimed - const MAX_ATTEMPTS = 3; // integer; number of times to try a job const MAX_JOB_RANDOM = 2147483647; // integer; 2^31 - 1, used for job_random const MAX_OFFSET = 255; // integer; maximum number of rows to skip diff --git a/maintenance/runJobs.php b/maintenance/runJobs.php index 85b0993df0c..0cf02174b70 100644 --- a/maintenance/runJobs.php +++ b/maintenance/runJobs.php @@ -85,7 +85,9 @@ class RunJobs extends Maintenance { $t = microtime( true ); $this->runJobsLog( $job->toString() . " STARTING" ); $status = $job->run(); - $group->ack( $job ); // done + if ( $status ) { + $group->ack( $job ); // done + } $t = microtime( true ) - $t; $timeMs = intval( $t * 1000 ); if ( !$status ) {