Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions queue_job_cron_jobrunner/models/queue_job.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ def _acquire_one_job(self):
FROM queue_job
WHERE state = 'pending'
AND (eta IS NULL OR eta <= (now() AT TIME ZONE 'UTC'))
ORDER BY date_created DESC
ORDER BY priority, date_created
LIMIT 1 FOR NO KEY UPDATE SKIP LOCKED
"""
)
Expand All @@ -55,7 +55,7 @@ def _process(self, commit=False):
# while the job is processing. However, doing this will release the
# lock on the db, so we need to find another way.
# if commit:
# self.flush()
# self.env.flush_all()
# self.env.cr.commit()

# Actual processing
Expand Down
30 changes: 29 additions & 1 deletion queue_job_cron_jobrunner/tests/test_queue_job.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,5 +67,33 @@ def test_queue_job_cron_trigger_enqueue_dependencies(self):

self.assertEqual(job_record.state, "done", "Processed OK")
# if the state is "waiting_dependencies", it means the "enqueue_waiting()"
# step has not been doen when the parent job has been done
# step has not been done when the parent job has been done
self.assertEqual(job_record_depends.state, "done", "Processed OK")

def test_acquire_one_job_use_priority(self):
with freeze_time("2024-01-01 10:01:01"):
self.env["res.partner"].with_delay(priority=3).create({"name": "test"})

with freeze_time("2024-01-01 10:02:01"):
job = (
self.env["res.partner"].with_delay(priority=1).create({"name": "test"})
)

with freeze_time("2024-01-01 10:03:01"):
self.env["res.partner"].with_delay(priority=2).create({"name": "test"})

self.assertEqual(self.env["queue.job"]._acquire_one_job(), job.db_record())

def test_acquire_one_job_consume_the_oldest_first(self):
with freeze_time("2024-01-01 10:01:01"):
job = (
self.env["res.partner"].with_delay(priority=30).create({"name": "test"})
)

with freeze_time("2024-01-01 10:02:01"):
self.env["res.partner"].with_delay(priority=30).create({"name": "test"})

with freeze_time("2024-01-01 10:03:01"):
self.env["res.partner"].with_delay(priority=30).create({"name": "test"})

self.assertEqual(self.env["queue.job"]._acquire_one_job(), job.db_record())