Public: anyone can read this; nobody can change it.

A store call that never answers is given up at a deadline, and the next attempt opens a fresh request #26

Merged opened this view on origin

Check · Review · Land done · Live — Landed; nothing deploys from this branch, so this is the end of its path.

Merged

The forge's first keyed snapshot (2026-10-13 00:46Z, on 0.7.62) hung on its first object, `forge.db` (81 MB), for over an hour. The pod held one quiet connection to Backblaze (149.137.136.9:443, a few KB/s) and `Bun.S3Client.write` never settled, so `withRetries` never got to retry. The network was not the cause: the same 81 MiB upload took 3.3 s from the droplet host on Bun 1.4.3, 1.3 s on Bun 1.…

shipped merged

opened this view on origin

The forge's first keyed snapshot (2026-10-13 00:46Z, on 0.7.62) hung on its first object, forge.db (81 MB), for over an hour. The pod held one quiet connection to Backblaze (149.137.136.9:443, a few KB/s) and Bun.S3Client.write never settled, so withRetries never got to retry. The network was not the cause: the same 81 MiB upload took 3.3 s from the droplet host on Bun 1.4.3, 1.3 s on Bun 1.3.14, and 4.6 s from a throwaway oven/bun:1.3-debian pod on the cluster network. Only the forge process's own connection was dead.

Every store call now has a deadline (deadlineMs, three minutes by default). An attempt that has not answered counts as failed, and the next attempt opens a fresh request; the abandoned attempt is left to settle alone with its outcome ignored. What finally fails says how long it waited (no answer in 180 s).

Tests in test/snapshot-store.test.ts: a call stuck once succeeds on the second attempt inside the deadline; one stuck for good fails after the attempts and says so.

Follow-up for the live forge: the hung snapshot still holds inFlight, so tonight's 08:00 UTC snapshot would chain behind it; the roll that ships this clears it. A manual encrypted copy of the data (repos, apps, children, runs, secret.key, and the forge.db copy the snapshot had staged) went to B2 under manual/2026-10-13T0108Z/ meanwhile.

🤖 Generated with Claude Code

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs