Classify CPU-limit Durable Object resets as retryable - #1792
Merged
Conversation
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
executor-marketing | 6214df8 | Commit Preview URL Branch Preview URL |
Aug 28 2026, 12:26 AM |
Contributor
Cloudflare previewTorn down — the PR is closed. |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
executor-cloud | 6214df8 | Aug 28 2026, 12:26 AM |
@executor-js/cli
@executor-js/config
@executor-js/execution
@executor-js/sdk
@executor-js/codemode-core
@executor-js/runtime-quickjs
@executor-js/plugin-file-secrets
@executor-js/plugin-graphql
@executor-js/plugin-keychain
@executor-js/plugin-mcp
@executor-js/plugin-onepassword
@executor-js/plugin-openapi
executor
commit: |
RhysSullivan
marked this pull request as ready for review
August 28, 2026 01:06
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: two Durable Object platform failures escape the platform-error classifier and fall out of the MCP handler as unhandled 500s instead of actionable protocol errors. One is the per-invocation CPU ceiling, which throws a plain
Errorreading "Durable Object exceeded its CPU time limit and was reset." The other is a storage backend fault raised while the object is being brought up, which reads "Internal error while starting up Durable Object storage caused object to be reset; reference = " — the existing bare-blip fragmentinternal error; reference =cannot match it, because the runtime interposes its own description between "internal error" and the reference id.Fix: add both messages to the classifier as transient platform resets (
cpu_limit,startup_internal_error), so the handler answers 503 withRetry-Afteron the same session id. Both fragments deliberately avoid the parts of the phrasing the runtime is known to vary, and the startup entry stays separate from the bare blip rather than widening that fragment, which would collapse every referenced error into one opaque bucket. The sibling memory-limit reset is deliberately left unclassified — the runtime attributes it to the application, and a retry reproduces it.Testing: extended the classifier unit suite with both messages, asserting for each that it classifies transient and that the classify-to-envelope seam renders the retryable 503, plus that the startup fault and the bare blip stay distinct kinds. Neither reset can be provoked on the dev stack, so this follows the same declared exception as the other unreachable patterns. Mutation-checked by neutralizing each new pattern (only its own tests fail, the rest pass).
typecheck,lint,format:checkpass, and e2ecloud/mcp-destroyed-session-envelopestill passes.