diff --git a/cron/scheduler.py b/cron/scheduler.py index e1cb061af38..3e8c8cb42e7 100644 --- a/cron/scheduler.py +++ b/cron/scheduler.py @@ -3982,11 +3982,12 @@ def run_one_job(job: dict, *, adapters=None, loop=None, verbose: bool = False) - if not _consume_interrupted_flag(job["id"]): mark_job_run(job["id"], success, error, delivery_error=delivery_error) + normalized_deliver = _normalize_deliver_value(job.get("deliver", "local")) if delivery_error: delivery_outcome = "failed" elif should_deliver and unresolved_origin: delivery_outcome = "not_configured" - elif should_deliver and job.get("deliver", "local") != "local": + elif should_deliver and normalized_deliver != "local": delivery_outcome = "delivered" else: delivery_outcome = "suppressed" diff --git a/tests/cron/test_execution_ledger.py b/tests/cron/test_execution_ledger.py index 28c9b3a330d..4fa15541722 100644 --- a/tests/cron/test_execution_ledger.py +++ b/tests/cron/test_execution_ledger.py @@ -300,6 +300,38 @@ def test_run_one_job_records_unresolved_origin_as_not_configured(monkeypatch): assert finished[-1][1]["delivery_outcome"] == "not_configured" +def test_run_one_job_normalizes_legacy_local_delivery_as_suppressed(monkeypatch): + import cron.scheduler as scheduler + + finished = [] + monkeypatch.setattr( + scheduler, + "run_job", + lambda job, *, defer_agent_teardown=None: (True, "output", "response", None), + ) + monkeypatch.setattr(scheduler, "save_job_output", lambda *_args: None) + monkeypatch.setattr(scheduler, "mark_job_run", lambda *_args, **_kwargs: None) + monkeypatch.setattr( + scheduler, + "finish_execution", + lambda execution_id, **kwargs: finished.append((execution_id, kwargs)), + ) + monkeypatch.setattr(scheduler, "mark_execution_running", lambda *_args: None) + monkeypatch.setattr(scheduler, "claim_dispatch", lambda *_args, **_kwargs: True) + monkeypatch.setattr(scheduler, "_consume_interrupted_flag", lambda *_args: False) + + job = { + "id": "legacy-local", + "name": "Legacy local", + "schedule": {"kind": "interval", "minutes": 10}, + "deliver": ["local"], + "execution_id": "exec-legacy-local", + } + + assert scheduler.run_one_job(job) is True + assert finished[-1][1]["delivery_outcome"] == "suppressed" + + def test_provider_start_recovers_interrupted_records_before_tick(monkeypatch): import cron.scheduler_provider as provider