-
Notifications
You must be signed in to change notification settings - Fork 2k
fix(mcp_toolset): Prevent infinite hang on stale MCP connections #3085
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Fixing the bug described here: google#3084
Summary of ChangesHello @akintunca, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request significantly enhances the robustness and reliability of the MCPToolset by addressing an issue where stale MCP server connections could lead to indefinite hangs. By implementing a strategy to recreate session managers and introducing configurable timeouts for critical operations, the changes ensure that the system remains responsive and provides clear error feedback, preventing application blocking and improving overall stability. Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request effectively addresses an infinite hang caused by stale MCP connections by recreating the session manager and adding timeouts. The approach is sound. My review includes two suggestions for improvement: moving the local asyncio
import to the top of the file for better code style, and, more importantly, adding logging to an exception handler that currently swallows all errors silently. This will improve debuggability without changing the intended behavior of ignoring errors on close.
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Summary
Fixes MCPToolset hanging indefinitely when MCP server connections become stale after idle periods.
Problem
After the agent sits idle,
MCPSessionManager
returns cached sessions with stale HTTP/SSE connections. Whensession.list_tools()
is called, it blocks forever instead of timing out or reconnecting, blocking the entire event loop.Solution
MCPSessionManager
before each get_tools() call to ensure fresh connectionsChanges
Testing
Tested with remote MCP servers after 10+ minute idle periods. Previously hung indefinitely, now works correctly with fresh connections on each request.
Fixes #3084