Title: fix: close servlet streamable HTTP transports on async lifecycle events by neerajbhatt · Pull Request #1039 · modelcontextprotocol/java-sdk · GitHub
Open Graph Title: fix: close servlet streamable HTTP transports on async lifecycle events by neerajbhatt · Pull Request #1039 · modelcontextprotocol/java-sdk
X Title: fix: close servlet streamable HTTP transports on async lifecycle events by neerajbhatt · Pull Request #1039 · modelcontextprotocol/java-sdk
Description: Summary Fixes #1021 — server sockets left in CLOSE-WAIT state when clients disconnect from SSE streams. Register AsyncListener on all three async paths in HttpServletStreamableServerTransportProvider (GET replay, GET listening stream, POST streaming response) so transports are properly closed on client disconnect, async timeout, or error Introduce a registerAsyncLifecycle helper to consolidate the listener boilerplate across all three paths Route SSE write failures in sendMessage() through transport.close() instead of directly removing the session from the session registry — transport failures should not evict the logical MCP session, which may be resumable via a new connection Test plan HttpServletStreamableAsyncServerTests — 35 tests pass HttpServletStreamableIntegrationTests — 36 tests pass HttpServletStreamableSyncServerTests — 34 tests pass
Open Graph Description: Summary Fixes #1021 — server sockets left in CLOSE-WAIT state when clients disconnect from SSE streams. Register AsyncListener on all three async paths in HttpServletStreamableServerTransportProvi...
X Description: Summary Fixes #1021 — server sockets left in CLOSE-WAIT state when clients disconnect from SSE streams. Register AsyncListener on all three async paths in HttpServletStreamableServerTransportProvi...
Opengraph URL: https://github.com/modelcontextprotocol/java-sdk/pull/1039
X: @github
Domain: github.com
| route-pattern | /:user_id/:repository/pull/:id/files(.:format) |
| route-controller | pull_requests |
| route-action | files |
| fetch-nonce | v2:6109bc89-877f-ac3e-3f8f-277a01750d2a |
| current-catalog-service-hash | ae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b |
| request-id | DE54:2A7A96:1C9D41E:25DCDC0:6A5C8C06 |
| html-safe-nonce | ac1b9961b257f4a38e4c4c6dde230125dc6d97fe142bc589fc2b2600d0c0b88d |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJERTU0OjJBN0E5NjoxQzlENDFFOjI1RENEQzA6NkE1QzhDMDYiLCJ2aXNpdG9yX2lkIjoiNTIxOTg0OTM1MjA1NjE3OTcxOCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 65a257cf96dbb445cb684f324eacdf72cf8cbc9357ea2addac43a994adced122 |
| hovercard-subject-tag | pull_request:3941405844 |
| github-keyboard-shortcuts | repository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/modelcontextprotocol/java-sdk/pull/1039/files |
| twitter:image | https://avatars.githubusercontent.com/u/216473?s=400&v=4 |
| twitter:card | summary_large_image |
| og:image | https://avatars.githubusercontent.com/u/216473?s=400&v=4 |
| og:image:alt | Summary Fixes #1021 — server sockets left in CLOSE-WAIT state when clients disconnect from SSE streams. Register AsyncListener on all three async paths in HttpServletStreamableServerTransportProvi... |
| og:site_name | GitHub |
| og:type | object |
| hostname | github.com |
| expected-hostname | github.com |
| None | 5290d7e14309ad1e76106a9c4237bd1041517e83ea182c8ab756752cb0c6940b |
| turbo-cache-control | no-preview |
| diff-view | unified |
| go-import | github.com/modelcontextprotocol/java-sdk git https://github.com/modelcontextprotocol/java-sdk.git |
| octolytics-dimension-user_id | 182288589 |
| octolytics-dimension-user_login | modelcontextprotocol |
| octolytics-dimension-repository_id | 919609219 |
| octolytics-dimension-repository_nwo | modelcontextprotocol/java-sdk |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 919609219 |
| octolytics-dimension-repository_network_root_nwo | modelcontextprotocol/java-sdk |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | true |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 9c975978430e9ad293956f2bbdaf153b1bd84a99 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width