waterWang opened a new pull request, #16431: URL: https://github.com/apache/dubbo/pull/16431
## Problem The Triple HTTP/2 client advertises a stream window size via SETTINGS (`SETTINGS_INITIAL_WINDOW_SIZE`) but the local `Http2LocalFlowController` retains the Netty default of 65,535 bytes. This mismatch causes two failure modes: 1. **8 MiB window**: The Java client tells the PHP server "send up to 8 MiB", the server sends 92 KiB of data, but the local flow controller rejects it with "Flow control window exceeded for stream". 2. **64 KiB window**: The PHP server exhausts the advertised window and waits for a WINDOW_UPDATE, but the client never sends one because the gRPC message cannot be assembled from partial data. ## Root Cause In `createHttp2ClientConnection()` and `createHttp2ServerConnection()`, a custom `TripleHttp2LocalFlowController` is created and attached to the connection, but its initial window size is never updated from the default 65,535 to match the value broadcast in the SETTINGS frame. The local flow controller enforces a smaller window than what was advertised to the peer. ## Fix After attaching the flow controllers, call `connection.local().flowController().initialWindowSize(initialWindowSize)` to synchronize the local enforcement window with the advertised SETTINGS value. This is applied in both `createHttp2ClientConnection()` and `createHttp2ServerConnection()`. Fixes #16427 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
