Skip to content

Classify CPU-limit Durable Object resets as retryable - #1792

Merged
RhysSullivan merged 2 commits into
mainfrom
fix/do-cpu-limit-classification
Aug 28, 2026
Merged

Classify CPU-limit Durable Object resets as retryable#1792
RhysSullivan merged 2 commits into
mainfrom
fix/do-cpu-limit-classification

Conversation

@RhysSullivan

@RhysSullivan RhysSullivan commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator

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 Error reading "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 fragment internal 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 with Retry-After on 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:check pass, and e2e cloud/mcp-destroyed-session-envelope still passes.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 28, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

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

@github-actions

github-actions Bot commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

Cloudflare preview

Torn down — the PR is closed.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 28, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
✅ Deployment successful!
View logs
executor-cloud 6214df8 Aug 28 2026, 12:26 AM

@pkg-pr-new

pkg-pr-new Bot commented Aug 28, 2026

Copy link
Copy Markdown

Open in StackBlitz

@executor-js/cli

npm i https://pkg.pr.new/@executor-js/cli@1792

@executor-js/config

npm i https://pkg.pr.new/@executor-js/config@1792

@executor-js/execution

npm i https://pkg.pr.new/@executor-js/execution@1792

@executor-js/sdk

npm i https://pkg.pr.new/@executor-js/sdk@1792

@executor-js/codemode-core

npm i https://pkg.pr.new/@executor-js/codemode-core@1792

@executor-js/runtime-quickjs

npm i https://pkg.pr.new/@executor-js/runtime-quickjs@1792

@executor-js/plugin-file-secrets

npm i https://pkg.pr.new/@executor-js/plugin-file-secrets@1792

@executor-js/plugin-graphql

npm i https://pkg.pr.new/@executor-js/plugin-graphql@1792

@executor-js/plugin-keychain

npm i https://pkg.pr.new/@executor-js/plugin-keychain@1792

@executor-js/plugin-mcp

npm i https://pkg.pr.new/@executor-js/plugin-mcp@1792

@executor-js/plugin-onepassword

npm i https://pkg.pr.new/@executor-js/plugin-onepassword@1792

@executor-js/plugin-openapi

npm i https://pkg.pr.new/@executor-js/plugin-openapi@1792

executor

npm i https://pkg.pr.new/executor@1792

commit: 6214df8

@RhysSullivan
RhysSullivan marked this pull request as ready for review August 28, 2026 01:06
@RhysSullivan
RhysSullivan merged commit c59e23c into main Aug 28, 2026
44 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant