summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSelwin Ong <selwin.ong@gmail.com>2020-09-10 08:15:15 +0700
committerGitHub <noreply@github.com>2020-09-10 08:15:15 +0700
commit01d71c898495e28fa380803a4328fe5106edbc02 (patch)
tree817cb3ed36ee2c3cd3c073694b0c6af76cf9f049
parent99f7dc87224dd1379c1846161137e4bbb1f6fe2d (diff)
downloadrq-01d71c898495e28fa380803a4328fe5106edbc02.tar.gz
Fixes an issue where retried jobs should not be put in FailedJobRegistry (#1336)
-rw-r--r--rq/worker.py2
-rw-r--r--tests/test_worker.py5
2 files changed, 6 insertions, 1 deletions
diff --git a/rq/worker.py b/rq/worker.py
index f4de170..a4e3b25 100644
--- a/rq/worker.py
+++ b/rq/worker.py
@@ -856,7 +856,7 @@ class Worker(object):
started_job_registry.remove(job, pipeline=pipeline)
- if not self.disable_default_exception_handler:
+ if not self.disable_default_exception_handler and not retry:
failed_job_registry = FailedJobRegistry(job.origin, job.connection,
job_class=self.job_class)
failed_job_registry.add(job, ttl=job.failure_ttl,
diff --git a/tests/test_worker.py b/tests/test_worker.py
index a5d4026..4ea8a30 100644
--- a/tests/test_worker.py
+++ b/tests/test_worker.py
@@ -379,16 +379,19 @@ class TestWorker(RQTestCase):
queue = Queue(connection=connection)
retry = Retry(max=2)
job = queue.enqueue(div_by_zero, retry=retry)
+ registry = FailedJobRegistry(queue=queue)
worker = Worker([queue])
# If job if configured to retry, it will be put back in the queue
+ # and not put in the FailedJobRegistry.
# This is the original execution
queue.empty()
worker.handle_job_failure(job, queue)
job.refresh()
self.assertEqual(job.retries_left, 1)
self.assertEqual([job.id], queue.job_ids)
+ self.assertFalse(job in registry)
# First retry
queue.empty()
@@ -403,6 +406,8 @@ class TestWorker(RQTestCase):
job.refresh()
self.assertEqual(job.retries_left, 0)
self.assertEqual([], queue.job_ids)
+ # If a job is no longer retries, it's put in FailedJobRegistry
+ self.assertTrue(job in registry)
def test_retry_interval(self):
"""Retries with intervals are scheduled"""