fix(runner): worker sluit af i.p.v. sleep infinity — zelfherstel na DB-hik #57
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "claude/worker-selfheal"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fixt de storing waar scrum4me-server:claude en ik allebei op stuitten: op 2026-07-09 (~20:50 UTC) parkeerden alle workers op beide hosts na een korte DB-onbereikbaarheid, en stonden 18 uur later nog stil.
docker psmeldde de hele tijd "Up".Oorzaak
bin/run-agent.shdeed op drie plekkensleep infinityals het opgaf. Het proces bleef leven, dusrestart: alwaysvuurde nooit (die reageert op een exit, niet op een marker-bestand), en zonder healthcheck was de dode worker onzichtbaar.Bijkomend, en dit is het gat dat scrum4me-server:claude precies opmat op 154: de pre-flight heeft een retry-budget van ~5 min (
AGENT_PREFLIGHT_RETRIES= 30×10s), maar de job-loop backofft maar ~75 s (5×, 5+10+20+40) vóór hij opgaf. Een DB-hik tussen 80 s en 5 min parkeerde de vloot terwijl een herstart hem had opgevangen. De juni-fix (#39) gaf de pre-flight dat budget; de job-loop kreeg het nooit.De fix
Alle drie de
sleep infinity→exit:sleep infinityexit "$preflight_rc"sleep infinityexit 3sleep infinityexit 1De kern:
entrypoint.shdoetexec gosu agent run-agent.sh, dus dit script is het hoofdproces. Bijexitsterft de container en grijptrestart: always. De herstart doorloopt opnieuw de pre-flight-lus, dus de job-loop erft dat 5-minuten-budget alsnog — via de restart, niet via een eigen teller. Een transiënte storing die binnen dat venster heelt lost zichzelf op; een echt kapotte worker crash-loopt zichtbaar (docker ps"Restarting", door Docker's restart-backoff gedempt) in plaats van een leugenachtige "Up".Bewuste ruil
De health-server (child van
entrypoint.sh) verdwijnt bij exit — precies de reden die het oude commentaar gaf om te parkeren. Die ruil is expliciet geaccepteerd: de run-logs onder/var/log/agentoverleven de herstart en zijn de diagnosebron, en een zichtbare crash-loop is een eerlijker signaal dan een stil geparkeerd proces achter een valse "Up".Buiten scope
worker-idea. De repo-agent-service indocker-compose.ymlheeft er al een; max2's host-local compose (/srv/scrum4me/compose/docker-compose.yml) niet. Met dezeexit-fix is dat nu secundair: de valse "Up" is al weg, de restart is automatisch. Aparte host-compose-follow-up.redeploy_all_workersop max2; 154 rolt zelf uit).Verificatie
bash -nschoon, geen actiefsleep infinitymeer (de 3 resterende treffers zijn toelichtende comments). Gedragsverificatie vergt een image-rebuild — dat gebeurt bij de uitrol, niet in deze PR.sleep infinity— zelfherstel na DB-hik