send errors to pending requests if server closes#333
Merged
ihrpr merged 5 commits intomodelcontextprotocol:mainfrom May 27, 2025
Merged
send errors to pending requests if server closes#333ihrpr merged 5 commits intomodelcontextprotocol:mainfrom
ihrpr merged 5 commits intomodelcontextprotocol:mainfrom
Conversation
There was a problem hiding this comment.
Thank you for addressing this issue - it will improve the reliability of the Python SDK.
One small improvement is needed: after sending errors and closing the streams, we should clear the _response_streams dictionary to prevent keeping references to closed streams.
# Current implementation in the PR:
for id, stream in self._response_streams.items():
error = ErrorData(code=CONNECTION_CLOSED, message="Connection closed")
await stream.send(JSONRPCError(jsonrpc="2.0", id=id, error=error))
await stream.aclose()
# Suggested implementation:
for id, stream in self._response_streams.items():
error = ErrorData(code=CONNECTION_CLOSED, message="Connection closed")
await stream.send(JSONRPCError(jsonrpc="2.0", id=id, error=error))
await stream.aclose()
self._response_streams.clear() This matches the existing pattern in the codebase where self._response_streams.pop(request_id, None) is used to remove individual streams after use.
With this small change, the PR should be ready to merge.
ihrpr
previously approved these changes
May 14, 2025
Contributor
ihrpr
left a comment
There was a problem hiding this comment.
Thank you!!
Would be great to add
self._response_streams.clear()
before merging.
ihrpr
approved these changes
May 27, 2025
This was referenced May 28, 2025
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.
Motivation and Context
Fixes #332
The client blocks indefinitely if the server streams close before responding to a pending request.
How Has This Been Tested?
Added a test. Without this fix, the test fails because the request blocks forever.
Breaking Changes
No
Types of changes
Checklist