Skip to content

fix(mcp): reset AsyncExitStack after cleanup for reconnect (#618)#2882

Open
Abdeltoto wants to merge 1 commit intoopenai:mainfrom
Abdeltoto:fix/mcp-exit-stack-reset-618
Open

fix(mcp): reset AsyncExitStack after cleanup for reconnect (#618)#2882
Abdeltoto wants to merge 1 commit intoopenai:mainfrom
Abdeltoto:fix/mcp-exit-stack-reset-618

Conversation

@Abdeltoto
Copy link
Copy Markdown

Problem

\AsyncExitStack\ cannot be reused after \�close(). After \cleanup(), a second \connect()\ (e.g. \MCPServerManager.reconnect()) would call \enter_async_context\ on a closed stack, which is invalid and can contribute to resource leaks / shutdown warnings (see #618).

Change

  • In _MCPServerWithClientSession.cleanup(), after clearing session state, assign a new \AsyncExitStack()\ and clear \server_initialize_result.
  • Add \ est_connect_after_cleanup_uses_fresh_exit_stack\ (connect → cleanup → connect → cleanup).

Testing

Made with Cursor

AsyncExitStack cannot be reused after aclose(). Second connect()/reconnect() must use a fresh stack.

Clear server_initialize_result on teardown. Add regression test for connect->cleanup->connect->cleanup.

Made-with: Cursor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working feature:mcp

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Resource tracker warning (leaked semaphores) with MCPServerStdio

1 participant