When a job fails and is rescheduled (eg in 60sec), then the statistics are skewed:
- a job start calls stats.addActive which decrements queuedJobs
- for a failed job, queue.finishJob indirectly calls stats.failedJob which increments queuedJobs again
- then the job is marked for rescheduling in eg 60sec
- then upon rescheduling in queue.requeue, indirectly stats.incQueued is called, which increments queuedJobs as well
With the result that the queuedJobs counter is incremented each time a job fails - even though there are not really more jobs in the queue.