MCP session disposal throws ObjectDisposedException by accessing an expired HttpContext
I maintainer di solito rispondono entro 2 giorni
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Start with McpServer.cs around line 129 and trace RunSessionHandler through its finally block. Review the existing EndedSession_RemovesLocationSubscription test and add regression coverage for disposal after the initialization request ends. Done means teardown releases subscriptions and applicable legacy admission state without throwing an ObjectDisposedException; pull request #250 is already open against this issue.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Description
Observed with Cosmos DB Shell 1.1.280-preview on macOS through a VS Code MCP client. The account connection succeeded; session cleanup subsequently logged:
Error disposing session.
System.ObjectDisposedException: IFeatureCollection has been disposed.
Object name: 'Collection'.
at Microsoft.AspNetCore.Http.DefaultHttpRequest.get_Path()
at Azure.Data.Cosmos.Shell.Mcp.McpServer...
ConfigureHttpTransport... in McpServer.cs:line 137
at ModelContextProtocol.AspNetCore.StreamableHttpSession.DisposeAsync()
at ModelContextProtocol.AspNetCore.StatefulSessionManager.DisposeSessionAsync(...)
The unsafe access remains in McpServer.cs on main. The updated local main and origin/main both pointed to 6875685c6a2670ffcf85cdecff13420eea3a0a9b when checked.
Cause
RunSessionHandler awaits RunSessionAsync, then its finally block accesses httpContext.Request.Path and potentially httpContext.RequestServices. The originating HTTP request can already be disposed when the longer-lived MCP session ends.
This also affects non-legacy stateful sessions: evaluating the "/sse" condition itself dereferences the disposed context.
Expected Behavior
Session teardown completes without accessing expired request state, while releasing subscriptions and applicable legacy admission state.
Suggested Fix
Capture the legacy-transport decision and required singleton services before awaiting the session. Use only those captured values during cleanup.
Regression Coverage
Exercise session disposal after the initialization HTTP request has ended. Assert both successful cleanup and absence of disposal exceptions.
The existing EndedSession_RemovesLocationSubscription test checks subscription removal, but that cleanup occurs before the failing outer finally; it therefore does not establish error-free teardown.
Scope
The observed failure is in session cleanup. It does not establish that preceding tool calls failed or that unrelated Azure deployment operations were affected.
- Lingua principale
- C#
- Stelle
- 4
- Fork
- 7
- Merge medio
- 2g 13m
- PR unite (30g)
- 30
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Azure/CosmosDBShell
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 15/100
Azure/CosmosDBShell#251 ·
I maintainer di solito rispondono entro 2 giorni
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
Azure/CosmosDBShell#240 ·
I maintainer di solito rispondono entro 2 giorni
-
automation P1
Difficoltà 5/5 Più di una settimana Idoneità per principianti 45/100
Azure/CosmosDBShell#178 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
Lightweight headless CI distribution (no MCP, LSP, interactive UI)Forse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Apertaautomation P1
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
Azure/CosmosDBShell#175 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
agentic enhancement P0
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
Azure/CosmosDBShell#153 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di Azure/CosmosDBShell
Issue simili
-
bug misleading tooling trivial
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
Docs example projects pinned to a literal library version instead of 3.*Forse già presa @DaveSkender l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
facioquo/stock-indicators-dotnet#2372 ·
I maintainer di solito rispondono entro 1 giorno
-
[辞書] 「ショタ」の追加Aperta辞書
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
yksr-melt/Meltype#653 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
needs-area
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
Azure/typespec-azure#5695 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
svenhb/GRBL-Plotter#483 ·