fix(monitoring): normalize cron delivery outcomes

This commit is contained in:
Victor Kyriazakos 2026-07-24 18:52:00 +00:00
parent 2a46acc9be
commit 2e2c77c30f
2 changed files with 34 additions and 1 deletions

View file

@ -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"

View file

@ -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