Skip to content

Commit

Permalink
fix: worker should not shutdown on fatal error
Browse files Browse the repository at this point in the history
  • Loading branch information
ClemDoum committed Jan 5, 2024
1 parent 92a3af7 commit 57ec34e
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 2 deletions.
1 change: 0 additions & 1 deletion neo4j-app/neo4j_app/icij_worker/worker/worker.py
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,6 @@ async def acknowledgment_cm(self, task: Task, project: str):
task_error = TaskError.from_exception(fatal_error)
await self.save_error(error=task_error, task=task, project=project)
await self.negatively_acknowledge(task, project, requeue=False)
raise fatal_error
self.info('Task(id="%s") successful !', task.id)

@final
Expand Down
31 changes: 30 additions & 1 deletion neo4j-app/neo4j_app/tests/icij_worker/worker/test_worker.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
)
from neo4j_app.icij_worker.exceptions import TaskCancelled, UnregisteredTask
from neo4j_app.icij_worker.worker.worker import add_missing_args, task_wrapper
from neo4j_app.tests.conftest import TEST_PROJECT, async_true_after
from neo4j_app.tests.conftest import TEST_PROJECT, async_true_after, fail_if_exception
from neo4j_app.tests.icij_worker.conftest import MockManager, MockWorker


Expand Down Expand Up @@ -463,3 +463,32 @@ def fn(a: str, b: str, c: str = "c") -> str:
TypeError,
):
fn(**all_args)


@pytest.mark.pull("146")
async def test_worker_acknowledgment_cm_should_not_raise_for_fatal_error(
mock_worker: MockWorker,
):
# Given
worker = mock_worker
task_manager = MockManager(worker.db_path, worker.db_lock, max_queue_size=10)
project = TEST_PROJECT
created_at = datetime.now()
task = Task(
id="some-id",
type="hello_world",
created_at=created_at,
status=TaskStatus.CREATED,
inputs={"greeted": "world"},
)

# When/Then
await task_manager.enqueue(task, project)
with fail_if_exception("worker should not raise on fatal error"):
async with worker.acknowledgment_cm(task, project):
with patch.object(worker, "__aexit__") as mocked_exit, patch.object(
worker, "shutdown"
) as mocked_shutdown:
raise ValueError("i am fatal")
assert mocked_exit.assert_not_called()
assert mocked_shutdown.assert_not_called()

0 comments on commit 57ec34e

Please sign in to comment.