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]

Reply via email to