Repository navigation
Stage deploy modules in parallel and explain deploy timeouts - #382
Merged
Merged
Conversation
The deploy POST staged every worker module to R2 one at a time before it sent response headers. For an app with 421 modules this took 270-320s, past the CLI's 300s headers timeout. The CLI then retried three times, and each retry staged everything again before it found the existing idempotency key. - Hash modules one at a time, then upload the original Blobs with up to six puts in flight (the Workers limit for pending R2 calls). - Do not retry the deploy POST after a headers timeout, and explain that the deploy may still finish. - Show the root cause of other fetch failures (e.g. ECONNREFUSED). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- Launch Chromium once per test file and give each form submission its own context, so browser start and close no longer count against the test timeout. - Freeze Date in the per-minute rate-limit test so it cannot cross a minute boundary. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
🚀 Deploying Preview to Cloudflare 🚀Preview URL: https://fix-deploy-finalize-fail-fast-void-cloud.voidzero-docs.workers.dev (commit 03dac88)This URL reflects your latest Preview deploymentPreview Deployments by commit
|
A headers timeout means the server received the request and is still working on it. Every retry sends the same idempotency key, so a retry that reaches the server returns the running deployment's receipt and the CLI follows it to the real result. Failing on the first timeout would report a failure for a deploy that may still land. When every attempt fails, the message now says how many tries were made and that the deploy may still finish. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Member
|
Good to merge. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
A hosted
void deployof an app with 421 worker modules failed after about 20 minutes:Before it sends response headers, the deploy POST stages every worker module to R2, one at a time:
The production data for the failed run:
Each try used only about 1s of CPU, so the Worker was waiting on R2. A 15% change in R2 speed decided whether a deploy passed or failed.
What this PR changes
Message when every try hit the headers timeout:
Other fetch failures now show their cause:
Decisions
Rollout
Known limits
void-apiruns inaws:us-east-2, which fits the ~0.7s per put. This is a separate infra change.Testing
done; exact message text for the timeout and forENOTFOUND/ECONNREFUSED/UND_ERR_SOCKETvp test runtsc --noEmit,void/isrtypecheck,vp lint,vp fmtThe second commit fixes two flaky platform tests found during verification. The native-form helper now starts Chromium once per file, not twice inside a 5s test. The email rate-limit test now freezes
Date, so it cannot cross a minute boundary.🤖 Generated with Claude Code