fix(mcp): prevent panic when SSE session is missing#2583
fix(mcp): prevent panic when SSE session is missing#2583vishnukannaujia wants to merge 2 commits intogoogleapis:mainfrom
Conversation
|
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
Summary of ChangesHello, 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 addresses a critical bug in the SSE session manager that could lead to a nil pointer dereference when attempting to retrieve a non-existent session. The changes enhance the robustness of session handling by safely managing unknown session lookups and include a dedicated test to ensure the stability of this behavior. Highlights
Changelog
Activity
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.
Code Review
The pull request correctly fixes a potential panic in sseManager.get by adding a check before accessing a potentially nil session. The accompanying regression test is also well-written and covers the fixed scenario. The included suggestion aims to slightly improve the test's failure diagnostics.
internal/server/mcp_test.go
Outdated
| if ok { | ||
| t.Fatal("expected unknown session lookup to return ok=false") | ||
| } | ||
| if session != nil { | ||
| t.Fatal("expected unknown session lookup to return nil session") | ||
| } |
There was a problem hiding this comment.
For better test failure diagnostics, you could combine the checks for the two return values. This provides a more comprehensive error message if the test fails, showing both returned values at once.
| if ok { | |
| t.Fatal("expected unknown session lookup to return ok=false") | |
| } | |
| if session != nil { | |
| t.Fatal("expected unknown session lookup to return nil session") | |
| } | |
| if ok || session != nil { | |
| t.Fatalf("manager.get() with unknown id returned (%v, %v), want (nil, false)", session, ok) | |
| } |
|
Addressed review feedback from Gemini:
Change pushed to the same branch: I will proceed with any additional maintainer feedback once CLA is complete. |
|
Thanks for the contribution. We have merged this fix in https://github.com/googleapis/genai-toolbox/pull/2557/changes. Thanks again! |
Summary
sseManager.getto only updatelastActivewhen the session exists(nil, false)cleanly for unknownsessionIdlookupsWhy
Issue #2548 reports a nil pointer dereference in
sseManager.get()whensessionIdis unknown. The map lookup can returnnil, and unguarded field assignment panics.Fix
Guard the
lastActiveupdate behindok, preserving existing behavior for valid sessions and avoiding panic for invalid IDs.Testing
TestSseManagerGetUnknownSessionininternal/server/mcp_test.gogo testcould not run in this environment becausegois not installed (zsh: command not found: go)Fixes #2548