fix: address protocol compliance issues across transports#923
Conversation
Fix SSE event listener, gRPC blocking offload handling, JSON-RPC route consistency, multiversion route alignment, and file content mapping to ensure correct behavior for cross-SDK interoperability. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Code Review
This pull request introduces changes to isolate outbound gRPC calls from inbound cancellation signals by forking the gRPC context, and offloads blocking operations from the Vert.x event loop using a new BlockingOffloadInterceptor. It also includes robustness improvements such as handling null file names in FileContentMapper_v0_3 and checking JSON types in JsonUtil. Feedback highlights the need to catch exceptions inside the offload executors to prevent hanging gRPC calls, perform size validation on file bytes to avoid OutOfMemory errors, and add a null check for the task parameter in ClientTaskManager_v0_3.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
If super.onHalfClose() throws inside the executor lambda, the exception propagates uncaught on the worker thread and the gRPC call never closes properly. Add try-catch around the handler invocation to close the call with INTERNAL status on failure. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add null check on task parameter in ClientTaskManager_v0_3.saveTaskEvent() - Extract duplicated gRPC context forking code into installForkedContextWrapper() in both GrpcHandler and GrpcHandler_v0_3 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fix SSE event listener, gRPC blocking offload handling, JSON-RPC route consistency, multiversion route alignment, and file content mapping to ensure correct behavior for cross-SDK interoperability.
This is groundwork to get the ITK working