deno cachein Docker builds repeatedly fails with a brotli decompression error on the SAME deno
14 days ago
Railway Support Ticket — persistent brotli corruption fetching deno.land/std from the build environment
Persistent brotli corruption fetching deno.land/std in Docker builds — 6 failures today, same file every time
Environment: staging. Services ft-advance (cron, worst hit) and
proud-vision, both building the same railway-worker/Dockerfile
(root = repo root, denoland/deno:2.8.1, RUN deno cache … fetches ~290
remote modules).
The error — byte-identical in all 6 failed builds
error: Import 'https://deno.land/std@0.132.0/node/internal/streams/from.mjs' failed.
0: brotli error
at https://deno.land/std@0.132.0/node/internal/streams/duplex.mjs:23:19
[ERRO] [9/9] RUN deno cache main.ts forwardTestJob.ts dispatcher.ts
Build Failed: ... exit code: 1Always this one file; the ~290 sibling downloads in the same builds succeed.
Full logs: railway logs --build <deployment-id> (IDs below).
Build matrix (2026-08-07, UTC)
| Service | Deployment | Commit | Time | deno fetch | Result |
|---|---|---|---|---|---|
| ft-advance | d0b5db71 | 8190340 | 13:14 | fresh | FAIL (brotli) |
| ft-advance | 5a2cd2ec | 8190340 | 13:33 | fresh (manual retry) | OK |
| proud-vision | 68cf9400 | d328852 | 13:35 | fresh | OK |
| ft-advance | 679b7dc8 | d328852 | 13:35 | fresh | FAIL (brotli) |
| proud-vision | 28574da9 | eaefbd1 | 14:13 | fresh | OK |
| ft-advance | d68e4458 | eaefbd1 | 14:13 | fresh | FAIL (brotli) |
| proud-vision | 2c8ee4e7 | 4687229 | 14:25 | fresh (Dockerfile edit broke cache) | FAIL (brotli) |
| ft-advance | 18181bbb | 4687229 | 14:25 | fresh | FAIL (brotli) |
| proud-vision | 8cc887c8 | ef441c2 | 14:27 | layer-cached, 0 downloads | OK |
| ft-advance | 9567cf5c | ef441c2 | 14:27 | fresh | FAIL (brotli) |
Reading: identical Dockerfile + commits on both services, so not commit
content. ft-advance fails 5/6 fresh fetches; proud-vision 1/3 — and its
final "green" downloaded nothing (layer cache masked it). Correlation is
with which builder/egress path each service's build lands on. Fetching the
URL from outside Railway is clean (curl with Accept-Encoding: br: HTTP
200, decodes to the correct 918-byte module) — a cache/edge on your egress
path is serving a corrupted brotli object for this one file.
No retry path
The dashboard retry control (used for the 13:33 success) is no longer
offered on the failed deployments, and `railway redeploy --service
ft-advance --yes` refuses: "The latest deployment … cannot be redeployed …
currently building, deploying, or was removed" (latest = FAILED 9567cf5c;
nothing was building).
Asks
-
Flush/invalidate the build-env cache or egress path serving the corrupt
object for
https://deno.land/std@0.132.0/node/internal/streams/from.mjs,or reassign the affected builder (ft-advance seems pinned to the bad one).
-
Restore a retry/redeploy control for failed deployments (dashboard and
CLI both refuse, above).
-
Confirm if this is a known deno.land CDN incident on your side.
Impact: the cron service is stuck on the 13:33 build; we cannot ship newer
commits to it.
2 Replies
14 days ago
This thread has been opened as a bounty so the community can help solve it.
Status changed to Open Railway • 14 days ago
14 days ago
Thank you for the quick response! The ticket has been updated upon new evidence. Please review it and respond.
14 days ago
Thank you for the helpful and quick responses! Neither quite fits the evidence though: every failed build ran in a fresh container with an empty DENO_DIR, so there was no local cache to bust — Deno fetched the URL fresh each time and got corrupt bytes. And we'd rather not relocate the whole environment. We've since added a retry loop around deno cache, which both mitigates and proves the point: today at 16:30Z, attempt 1 on the same URL failed with the brotli error and attempt 2 seconds later fetched it clean — intermittent corruption on the builder egress path for that one object. Still hoping someone from Railway infra can take a look at it. Full logs from all five failed builds available.