fix(docker): a crash-looping service belongs in Needs attention (#5209)
failing_services filtered on `(service_trouble(s) or 9) <= 2`; a crash loop ranks 0, which is falsy, so the worst kind of trouble was left out. Test the rank against None. The page test's task error also gains the age_s the _swarm_failures include reads. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -377,4 +377,6 @@ def failing_services(services: list[dict]) -> list[dict]:
|
||||
"""The services that belong in Needs attention: a crash loop, or short of
|
||||
their desired replicas. A healthy service whose failed tasks Swarm has
|
||||
already replaced is history, shown on the service, not a problem now."""
|
||||
return [s for s in services_problems_first(services) if (service_trouble(s) or 9) <= 2]
|
||||
# A crash loop ranks 0, so test the rank against None, not for truth.
|
||||
return [s for s in services_problems_first(services)
|
||||
if (t := service_trouble(s)) is not None and t <= 2]
|
||||
|
||||
@@ -117,7 +117,7 @@ async def test_a_failing_service_leads_and_the_failures_are_listed(app):
|
||||
"crash_looping": True, "failures_1h": 7, "failures_24h": 9, "tasks_known": True,
|
||||
"trouble_since": now - timedelta(minutes=20), "replicas": [], "previous_tasks": 7,
|
||||
"last_error": {"state": "failed", "error": "task: non-zero exit (1)", "exit_code": 1,
|
||||
"node": "nas", "at": None}}
|
||||
"node": "nas", "at": None, "age_s": 120}}
|
||||
failures = [{"kind": "service", "name": "codex_db", "host_id": None, "host": "nas", "count": 9,
|
||||
"at": now - timedelta(minutes=2), "detail": "task: non-zero exit (1)"},
|
||||
{"kind": "container", "name": "backup", "host_id": "h1", "host": "nas", "count": 1,
|
||||
|
||||
Reference in New Issue
Block a user