apache / dubbo

The java implementation of Apache Dubbo. An RPC and microservice framework.
https://dubbo.apache.org/
Apache License 2.0
40.49k stars 26.43k forks source link

[Feature] TotalPendingBytes size overflow Exception #14635

Open caoyanan666 opened 2 months ago

caoyanan666 commented 2 months ago

Pre-check

Search before asking

Apache Dubbo Component

Java SDK (apache/dubbo)

Descriptions

I was called to handle a exception, which is Caused by: io.netty.handler.codec.http2.Http2Exception$StreamException: TotalPendingBytes size overflow for stream: 9 at io.netty.handler.codec.http2.Http2Exception.streamError(Http2Exception.java:151)

I used the triple protocol, and then the flow control intercepted it.

I found that the initialWindowSize of TriHttp2RemoteFlowController is read from the dubbo.rpc.tri.initial-window-size parameter, but the default value is 64KB. However, TripleHttp2Protocol also reads from the environment variable to build Http2Settings, but the nettyServer initWindowSize initialized by TripleHttp2Protocol is 8MB. I now get an error of 64KB in the production environment. I am going to configure it to 1MB, but TripleHttp2Protocol drops from 8MB to 1MB. My question is, why is the value read from an environment variable, the default value of TripleHttp2Protocol is 8MB, but the flow control is only 64KB

Related issues

https://github.com/apache/dubbo/issues/13676

Are you willing to submit a pull request to fix on your own?

Code of Conduct

JunJieLiu51520 commented 1 month ago

emm, i think it should be spilit from 'dubbo.rpc.tri.initial-window-size' in TriHttp2RemoteFlowController, details refer to the pr #14657

@AlbumenJ PTAL