An HTTP 200 response containing invalid JSON currently completes sendMessage before parsing the body. The later parsing error cannot reach the pending request, so initialization eventually reports a timeout.
This moves the success signal after JSON-RPC parsing. Parsing failures now retain their cause and reach the existing McpClientSession failure callback, which removes the pending request. Notifications keep their existing behavior.
The existing empty-response test was named and documented as a notification test but sent an initialize request. It now sends notifications/initialized.
Validation on Java 17, with both Jackson 2 and Jackson 3:
82 related tests passed per profile, including 10 new regression cases.
The initial regression run failed on the original code for transport completion, pending-request failure, and initialization failure.
Tests cover malformed/empty/blank JSON, the parsing cause, pending cleanup before close, normal initialize/list/call, notifications, HTTP 503, connection refusal, and a real timeout.
Docker-based tests were not run successfully in this environment; the full suite is not claimed as verified.
Related: #685 concerns SSE comment parsing. This change addresses the application/json response branch.
AI-assisted implementation, submitted for human review.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
An HTTP 200 response containing invalid JSON currently completes sendMessage before parsing the body. The later parsing error cannot reach the pending request, so initialization eventually reports a timeout.
This moves the success signal after JSON-RPC parsing. Parsing failures now retain their cause and reach the existing McpClientSession failure callback, which removes the pending request. Notifications keep their existing behavior.
The existing empty-response test was named and documented as a notification test but sent an initialize request. It now sends notifications/initialized.
Validation on Java 17, with both Jackson 2 and Jackson 3:
Related: #685 concerns SSE comment parsing. This change addresses the application/json response branch.
AI-assisted implementation, submitted for human review.
Fixes #1147