Compare commits

...
2 Commits
Author SHA1 Message Date
shamoon dda60db9f1 Sure sonar 2026-10-27 21:58:52 -07:00
shamoon 5d0197205f Fixhancement: show better result for revoked / expired tasks 2026-10-27 21:05:33 -07:00
2 changed files with 38 additions and 0 deletions

No files matched your search

+8
View File
@@ -1381,9 +1381,17 @@ def task_revoked_handler(
return
try:
close_old_connections()
reason = "Task revoked before completion."
if expired:
reason = "Task expired before execution."
elif terminated:
reason = "Task terminated during execution."
PaperlessTask.objects.filter(task_id=task_id).update(
status=PaperlessTask.Status.REVOKED,
date_done=timezone.now(),
result_data={
"reason": (reason + " Check worker logs for details."),
},
)
except Exception: # pragma: no cover
logger.exception("Updating PaperlessTask on revocation failed")
+30
View File
@@ -429,6 +429,36 @@ class TestTaskRevokedHandler:
assert task.status == PaperlessTask.Status.REVOKED
assert task.date_done is not None
@pytest.mark.parametrize(
("expired", "terminated", "reason"),
[
(True, False, "Task expired before execution."),
(False, True, "Task terminated during execution."),
(False, False, "Task revoked before completion."),
],
)
def test_records_revocation_details(
self,
mocker,
expired,
terminated,
reason,
) -> None:
task = PaperlessTaskFactory(status=PaperlessTask.Status.PENDING)
request = mocker.MagicMock()
request.id = task.task_id
task_revoked_handler(
request=request,
expired=expired,
terminated=terminated,
)
task.refresh_from_db()
assert task.result_data == {
"reason": f"{reason} Check worker logs for details.",
}
def test_ignores_none_request(self) -> None:
"""task_revoked_handler must not raise when request is None."""