fix(mcp): scope error teardown to the erroring session; serialize ref… - #3468
Open
joestump-agent wants to merge 1 commit into
Open
fix(mcp): scope error teardown to the erroring session; serialize ref…#3468joestump-agent wants to merge 1 commit into
joestump-agent wants to merge 1 commit into
Conversation
Contributor
|
All contributors have signed the CLA ✍️ ✅ |
Contributor
Author
|
recheck |
Contributor
Author
|
I have read the Contributor License Agreement (CLA) and hereby sign the CLA. |
joestump-agent
force-pushed
the
upstream-pr/mcp-error-teardown-scope
branch
from
August 16, 2026 07:08
69f5d27 to
e7bf77b
Compare
…reshers A StateError transition closed and deregistered whatever session was currently in the sessions map. When the error was reported by a stale path — a refresh whose list call failed after a renewal had already swapped in a fresh session — the teardown killed the healthy replacement and wiped its tool/prompt/resource registrations, leaving the server 'connected' with no capabilities until the next renewal. updateState now closes exactly the session the error was reported against: if the registry holds a different (newer) session, it and its registrations are left alone. Error transitions with no specific session (connect failures) keep the old tear-everything behavior. The published state never carries a dead session pointer. RefreshTools/RefreshPrompts/RefreshResources now run under the same per-server renew lock as session renewal, so the registered session cannot be swapped between their Get and their state update, and they report failures against the exact session that failed. Co-authored-by: Joe Stump <joe@stu.mp>
joestump-agent
force-pushed
the
upstream-pr/mcp-error-teardown-scope
branch
from
August 16, 2026 07:12
e7bf77b to
5e2e561
Compare
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.
…reshers
A StateError transition closed and deregistered whatever session was currently in the sessions map. When the error was reported by a stale path — a refresh whose list call failed after a renewal had already swapped in a fresh session — the teardown killed the healthy replacement and wiped its tool/prompt/resource registrations, leaving the server 'connected' with no capabilities until the next renewal.
updateState now closes exactly the session the error was reported against: if the registry holds a different (newer) session, it and its registrations are left alone. Error transitions with no specific session (connect failures) keep the old tear-everything behavior. The published state never carries a dead session pointer.
RefreshTools/RefreshPrompts/RefreshResources now run under the same per-server renew lock as session renewal, so the registered session cannot be swapped between their Get and their state update, and they report failures against the exact session that failed.
CONTRIBUTING.md.