diff --git a/apiserver/bll/task/task_bll.py b/apiserver/bll/task/task_bll.py index a7a93aa..100988e 100644 --- a/apiserver/bll/task/task_bll.py +++ b/apiserver/bll/task/task_bll.py @@ -7,7 +7,7 @@ from redis import StrictRedis from six import string_types import apiserver.database.utils as dbutils -from apiserver.apierrors import errors +from apiserver.apierrors import errors, APIError from apiserver.apimodels.tasks import TaskInputModel from apiserver.bll.queue import QueueBLL from apiserver.bll.organization import OrgBLL, Tags @@ -453,11 +453,7 @@ class TaskBLL: "__", "." ) raw_updates[value_iteration_field] = { - "$cond": [ - condition, - iter_value, - f"${value_iteration_field}", - ] + "$cond": [condition, iter_value, f"${value_iteration_field}",] } for metric_key, metric_data in last_scalar_events.items(): @@ -525,8 +521,8 @@ class TaskBLL: status_reason: str, ): try: - cls.dequeue(task, company_id) - except errors.bad_request.InvalidQueueOrTaskNotQueued: + cls.dequeue(task, company_id, silent_fail=True) + except APIError: # dequeue may fail if the queue was deleted pass diff --git a/apiserver/tests/automated/test_queues.py b/apiserver/tests/automated/test_queues.py index 0be90a1..c6625e2 100644 --- a/apiserver/tests/automated/test_queues.py +++ b/apiserver/tests/automated/test_queues.py @@ -81,6 +81,18 @@ class TestQueues(TestService): self.assertQueueTasks(res.queue, [task]) self.assertTaskTags(task, system_tags=[]) + def test_dequeue_not_queued_task(self): + # queue = self._temp_queue("TestTempQueue") + task_name = "TempDevTask" + task = self._temp_task(task_name) + self.api.tasks.edit(task=task, status="queued") # , execution={"queue": queue}) + res = self.api.tasks.get_by_id(task=task) + self.assertEqual(res.task.status, "queued") + + self.api.tasks.dequeue(task=task) + res = self.api.tasks.get_by_id(task=task) + self.assertEqual(res.task.status, "created") + def test_dequeue_from_deleted_queue(self): queue = self._temp_queue("TestTempQueue") task_name = "TempDevTask"