Repository navigation
Answer not found for requests that land mid-destroy on an MCP session - #2391
Merged
Merged
Conversation
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
executor-marketing | ce7d75c | Commit Preview URL Branch Preview URL |
Oct 25 2026, 09:37 PM |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
executor-cloud | ce7d75c | Oct 25 2026, 09:38 PM |
Contributor
Cloudflare previewTorn down — the PR is closed. |
@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
force-pushed
the
mcp-destroy-stale-session-meta
branch
from
October 25, 2026 21:26
ea1c60a to
5c673c0
Compare
destroy() wipes the session's storage and the SDK's tables before it aborts the isolate. A request landing in between passed the condemned-marker check, since the marker was wiped too, and then trusted the in-memory session meta. It restored the runtime against the dropped tables and failed with "no such table: cf_agents_mcp_servers" as an unhandled 500. Once destroy starts, the cached meta no longer vouches for the session.
RhysSullivan
force-pushed
the
mcp-destroy-stale-session-meta
branch
from
October 25, 2026 21:36
5c673c0 to
ce7d75c
Compare
RhysSullivan
marked this pull request as ready for review
October 25, 2026 21:51
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.
An MCP request that lands on a session while the session's Durable Object is being destroyed could fail with an unhandled 500 (
no such table: cf_agents_mcp_servers).mcp-destroyed-session-envelopecatches this intermittently onmain. Vite also broadcast the server error as an overlay, which broke the next browser scenario in the same shard (health-check-rpc-ui).Cause: the SDK's
destroy()drops its tables and wipes storage, including the condemned marker, before it aborts the isolate. AvalidateMcpSessionOwnercall in that window passed the marker check and then trusted the in-memory session meta. Because the runtime had just been closed, it restored the runtime against the dropped tables.Once
destroy()starts,loadSessionMetano longer returns the cached meta. Such a request now getsnot_found(404 "Session not found"), the same answer as after the wipe. The answer before the wipe ("terminated") is unchanged.Tests: #2392.