Skip to content

Commit 7f8efcb

Browse files
committed
Merge PR #900 into 18.0
Signed-off-by sbidoul
2 parents 2601ebb + ffcaab9 commit 7f8efcb

3 files changed

Lines changed: 22 additions & 2 deletions

File tree

queue_job/controllers/main.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,10 @@ def _try_perform_job(cls, env, job):
108108

109109
@classmethod
110110
def _enqueue_dependent_jobs(cls, env, job):
111+
if not job.should_check_dependents():
112+
return
113+
114+
_logger.debug("%s enqueue depends started", job)
111115
tries = 0
112116
while True:
113117
try:
@@ -136,6 +140,7 @@ def _enqueue_dependent_jobs(cls, env, job):
136140
time.sleep(wait_time)
137141
else:
138142
break
143+
_logger.debug("%s enqueue depends done", job)
139144

140145
@classmethod
141146
def _runjob(cls, env: api.Environment, job: Job) -> None:
@@ -167,6 +172,7 @@ def retry_postpone(job, message, seconds=None):
167172
# traceback in the logs we should have the traceback when all
168173
# retries are exhausted
169174
env.cr.rollback()
175+
return
170176

171177
except (FailedJobError, Exception) as orig_exception:
172178
buff = StringIO()
@@ -182,9 +188,7 @@ def retry_postpone(job, message, seconds=None):
182188
buff.close()
183189
raise
184190

185-
_logger.debug("%s enqueue depends started", job)
186191
cls._enqueue_dependent_jobs(env, job)
187-
_logger.debug("%s enqueue depends done", job)
188192

189193
@classmethod
190194
def _get_failure_values(cls, job, traceback_txt, orig_exception):

queue_job/job.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -537,6 +537,9 @@ def _get_common_dependent_jobs_query(self):
537537
AND state = %s;
538538
"""
539539

540+
def should_check_dependents(self):
541+
return any(self.__reverse_depends_on_uuids)
542+
540543
def enqueue_waiting(self):
541544
sql = self._get_common_dependent_jobs_query()
542545
self.env.cr.execute(sql, (PENDING, self.uuid, DONE, WAIT_DEPENDENCIES))

test_queue_job/tests/test_dependencies.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,3 +287,16 @@ def test_depends_graph_uuid_group(self):
287287
self.assertTrue(jobs[0].graph_uuid)
288288
self.assertTrue(jobs[1].graph_uuid)
289289
self.assertEqual(jobs[0].graph_uuid, jobs[1].graph_uuid)
290+
291+
def test_should_check_dependents(self):
292+
job_root = Job(self.method)
293+
job_a = Job(self.method)
294+
job_a.add_depends({job_root})
295+
296+
DelayableGraph._ensure_same_graph_uuid([job_root, job_a])
297+
298+
job_root.store()
299+
job_a.store()
300+
301+
self.assertTrue(job_root.should_check_dependents())
302+
self.assertFalse(job_a.should_check_dependents())

0 commit comments

Comments
 (0)