diff --git a/queue_job/job.py b/queue_job/job.py index e486d1f001..995cf16972 100644 --- a/queue_job/job.py +++ b/queue_job/job.py @@ -591,6 +591,17 @@ def store(self): db_record = self.db_record() if db_record: + # If job was cancelled manually, do not revive it for a retry + if ( + self.retry > 0 + and db_record.state == CANCELLED + and self.state in (PENDING, FAILED) + ): + self.state = CANCELLED + self.date_cancelled = db_record.date_cancelled + if not self.result and db_record.result: + self.result = db_record.result + db_record.with_context(_job_edit_sentinel=edit_sentinel).write( self._store_values() ) diff --git a/queue_job/views/queue_job_views.xml b/queue_job/views/queue_job_views.xml index 8cab20b2c0..2ffda83132 100644 --- a/queue_job/views/queue_job_views.xml +++ b/queue_job/views/queue_job_views.xml @@ -25,7 +25,7 @@ />