Proxy watchdog fails queued jobs before execution; late Solstice success leaves Forgejo falsely red #7
Loading…
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?
The Forgejo proxy watchdog terminally fails jobs that are still queued in Solstice. When the job subsequently succeeds, the proxy reports success but Forgejo retains the earlier failure. This creates false-red CI and blocks recovery PRs despite successful execution.
Reproduction and observed evidence
Production on 2026-09-14 UTC, proxy image revision
b307005, executor revision8479c8f. An executor image-cache rollout delayed admission; the recovered executor became Ready at15:41UTC. The queue delay continued behind admitted work.4694527ed1958633785da5db86bd065454214b532a6ccfc8-79dc-4f9c-bd80-bd8fc53848d0pruning stale in-flight task (no JobResult received),age_secs=2099; Forgejo marked the test failed after35m.succeeded,exit_code=0, no failure summary.JobResult for unknown request_id; reporting via embedded creds.reported result via embedded creds (cross-runner fallback),success=true,exit_code=0.Solstice logs prove the workload passed: workspace examples build281s, workspace lib/bin tests122s, workspace all-target Clippy134s, followed by
ALL CHECKS PASSED. The conflict-check request1e9a953f-e670-4954-bac7-dc290ff2d690also succeeded at the same head. Solstice is the execution source of truth; the Forgejo status is a stale projection.Suspected cause
crates/runner-integration/src/watchdog.rscompares wall time since local in-flight admission againststale_after, removes the request, stops streaming, callsreport_failure, and releases the permit without first checking authoritative Solstice queue/execution state. Queue delay is therefore treated as terminal execution failure.reporter.rssubsequently uses cross-runner fallback for the removed request, but an accepted UpdateTask call is not proof that Forgejo changed a terminal job.Expected behavior and regression coverage
This report does not propose disabling timeout protection, editing production SQL, forging green statuses, or weakening review gates. It also does not claim the two-minute CI target: this exact integration workload took approximately10m of execution plus queue delay.