Failed attempt has no output and Forgejo log download returns 500: missing task log file #5
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?
A completed failed Forgejo attempt exposes no useful logs, and its downloadable log returns HTTP 500 because the expected Forgejo log file does not exist. This occurs after deploying the log-spool fix from #3.
Rith revision:
8486d7e9cc(current deployment pin and current upstream main when checked). Forgejo 15.0.9. Disposable NixOS Firecracker guests, 4 vCPUs / 8192 MiB, three concurrent jobs per controller. Persistent redacted archives configured at /data/rith/logs.Failed attempt:
https://git.cashu.dev/thesimplekid/satsettle/actions/runs/53/jobs/2/attempt/1
Its log-download endpoint:
https://git.cashu.dev/thesimplekid/satsettle/actions/runs/53/jobs/2/attempt/1/logs
Repeated GET requests return HTTP 500 with this body:
The page's structured state says:
Controls checked at the same time:
Please investigate finalization and failure reporting when no remote log file exists. Even for an infrastructure/guest failure, the failed step should expose a diagnostic and recovery archive link, and finalized attempts should have a downloadable diagnostic log rather than an HTTP 500. The initial setup step consuming the entire runtime while all following steps fail at 0s also needs review.
The underlying job failure and responsibility for the missing remote file are not yet determined: this could be a runner upload/finalization failure or a Forgejo storage issue. Direct runner archive/journal access has been requested and is still pending; no claim is made that the local archive is missing. This report records the reproducible integration failure, not a confirmed internal root cause.
Runner access is now available. The evidence points to an orphaned task claim after FetchTask times out, rather than a job that executed and then lost its output.
Observed on baile-ci-runner-01:
There is no Accepted entry for 16815 in the interval, no
forgejo-16815entry in/var/lib/unified-ci/state.json's jobs map or completed_jobs, no local archive for SHA256("forgejo-16815"), and GET/jobs/forgejo-16815returns 404. Archives for neighbouring tasks exist. There are no kernel journal entries in the same interval indicating a host OOM. The controller continued processing other jobs.Forgejo's attempt start time is 14:00:06 UTC; it later reports failure after 13m27s. The missing file is specifically task 16815's log. The account currently lists only runner ID 8175 / UUID 0d1b1d2c-6768-479c-a042-8adafe82ca3f; the repository has no separately registered runners.
Source observation at
8486d7e:DEFAULT_CONNECT_HTTP_TIMEOUTis hardcoded to 5 seconds in src/ingress.rs.fetch_taskonly ingests the response after the unary HTTP call succeeds; this failed request leaves no local task ID to heartbeat, execute, archive, or finalize.Inference (needs Forgejo server-side confirmation): the server assigned 16815, but its response was lost/timed out; the runner moved on and the task remained orphaned until Forgejo expired it. The absence of a local log archive is therefore expected if execution never began. The disk log-spool fix cannot recover a task ID never received.
Please investigate claim/acknowledgement or reconciliation/idempotency for FetchTask with a lost response, and make transport timeouts configurable/appropriate for WAN/VPN use. Raising the timeout alone reduces likelihood but does not eliminate the lost-response problem. Server-side failures for never-started tasks should also provide a useful diagnostic and a safe log-download response instead of HTTP 500.
No live configuration was changed during this diagnosis.