Root cause: task_cmp in delay.c compared nextrun (always 0 for ms-tasks) instead of nextrun_ts, making all ms-tasks appear equal in the ordered queue. The heartbeat task was re-enqueued correctly but stuck behind the liveness poll task in the broken ordering. Changes: - delay.c: fix task_cmp to compare nextrun_ts for ms-tasks (ns precision) - ha.c: use runcount=-1 (infinite repeat) instead of one-shot+re-arm; simpler and avoids the broken re-arm path entirely - ha.c: add static atomic idempotency guard to prevent duplicate heartbeat tasks on re-election |
||
|---|---|---|
| .. | ||
| .claude | ||
| autoscaler | ||
| controller | ||
| docs | ||
| frontend | ||
| include | ||
| lib | ||
| nixSupport | ||
| scheduler | ||
| schema | ||
| tools | ||
| worker | ||
| build | ||
| flake.lock | ||
| flake.nix | ||
| meson.build | ||
| meson.options | ||