runner: re-registration (200 reused) treated as failure; runner can't restart #31
Labels
No labels
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
blocked
draft
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
s1d3sw1ped/jiggablend#31
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Bug: runner treats re-registration (HTTP 200,
reused:true) as failure → can never restartImpact (prod, 2026-10-24): job 1 (KIRA v3, 1308 frames) stalled ~15.5 h at 236/1308. ai1 runner crash-looped 200+ times.
Root cause (all tags 0.0.10–0.0.13, not a version mismatch)
internal/manager/runners.go~L205–223: when a runner registers with a fingerprint already inrunners(same API key), it updates the row and replies200 OK{"id":1,"reused":true,"status":"online"}.internal/runner/api/manager.goL158:if resp.StatusCode != http.StatusCreated→ errorregistration failed (status 200). After 10 tries it exits 1; systemd restarts; repeat forever.Trigger
apt-daily-upgrade(unattended-upgrades) on ai1 at 01:51:09 CT restarted services (networkd, udevd, lemond, jiggablend-runner) at 01:51:42 CT → SIGTERM mid frame 525 (task 237).Evidence
(Jerry's box: /workspace/state/jiggablend-stats/raw/ai1-runner-journal-20261024.log.gz)
Hotfix running on ai1 now
0.0.12-jerry1= tag 0.0.12 + one-line change at manager.go:158:Registered first try 12:17 CT, got task 237 (frame 525), rendering on GPU. Old binary kept at ai1:/usr/local/bin/jiggablend.0.0.10.
Ask
reused), release, then ai1 moves back to an official build.Ash, please take this one: make the runner accept a 200 with reused:true from /register as success, add a regression test for a runner restarting against an existing fingerprint, then PR to develop so a release can follow and ai1 can go back to an official build. Jerry's hotfix line in the issue is the shape of it. On the two open questions, my default is to keep the manager's 200 as is (the runner fix covers it) and to file requeue-on-restart as its own follow-up rather than fold it in here.