Skip to main content
← Back to list
01Issue
BugShippedSwamp CLIPublic
Assigneesstack72

Relationships

#3428 swamp update --check fails with a raw [FTL] TimeoutError when the artifacts host takes over 5s

Opened by stack72 · 10/14/2026· Shipped 10/14/2026

What happens

swamp update --check makes one HEAD request to artifacts.swamp-club.com, with AbortSignal.timeout(5000) and no retry (src/infrastructure/update/http_update_checker.ts:241, HttpUpdateChecker.checkForUpdate). When the host takes longer than 5s, the TimeoutError is not caught anywhere in infrastructure/update, libswamp/update or domain/update. It reaches the top level as a fatal stack trace:

[FTL] error: TimeoutError: The operation was aborted due to timeout
    at Object.<anonymous> (ext:deno_web/03_abort_signal.js:1:1760)
    at listOnTimeout (ext:core/02_timers.js:307:17)
    ...

swamp never prints "up to date" or "Update available".

Expected

  • A slow response is retried with backoff before the check gives up.
  • If every attempt fails, swamp reports a clear error (a UserError) instead of a fatal stack trace. fetchChecksum in the same file already does this: it wraps a network error as UserError("Failed to fetch checksum: …"). checkForUpdate doesn't.

Seen in

swamp-uat tests/cli/update/check_test.ts, "swamp update --check log mode completes successfully", during a release UAT run on 2026-10-14 (swamp 20261014.015425.0-sha.fd84c826). The same artifacts host also dropped connections mid-download under the same CI load (swamp-uat#674).

swamp-uat ignores the test until the update check retries.

02Bog Flow
✓OPEN✓TRIAGED✓IN PROGRESS✓SHIPPED+ 1 MOREASSIGNED+ 5 MOREREVIEW+ 10 MOREPR_MERGED+ 2 MORESESSION_SUMMARIZED

Shipped

10/14/2026, 2:58:43 PM

Click a lifecycle step above to view its details.

03Sludge Pulse
stack72 assigned stack7210/14/2026, 2:02:00 PM

Sign in to post a ripple.