diff --git a/queue_job/controllers/main.py b/queue_job/controllers/main.py index f9f2206b2b..68aba17ab8 100644 --- a/queue_job/controllers/main.py +++ b/queue_job/controllers/main.py @@ -89,9 +89,11 @@ def retry_postpone(job, message, seconds=None): if err.pgcode not in PG_CONCURRENCY_ERRORS_TO_RETRY: raise - retry_postpone(job, tools.ustr(err.pgerror, errors='replace'), - seconds=PG_RETRY) _logger.debug('%s OperationalError, postponed', job) + raise RetryableJobError( + tools.ustr(err.pgerror, errors='replace'), + seconds=PG_RETRY + ) except NothingToDoJob as err: if str(err): @@ -106,6 +108,10 @@ def retry_postpone(job, message, seconds=None): # delay the job later, requeue retry_postpone(job, str(err), seconds=err.seconds) _logger.debug('%s postponed', job) + # Do not trigger the error up because we don't want an exception + # traceback in the logs we should have the traceback when all + # retries are exhausted + env.cr.rollback() except (FailedJobError, Exception): buff = StringIO() diff --git a/queue_job/job.py b/queue_job/job.py index 53aa81e118..66d82f865e 100644 --- a/queue_job/job.py +++ b/queue_job/job.py @@ -594,6 +594,7 @@ def set_pending(self, result=None, reset_retry=True): self.state = PENDING self.date_enqueued = None self.date_started = None + self.date_done = None if reset_retry: self.retry = 0 if result is not None: