[Feature] TotalPendingBytes size overflow Exception
- Dominant language
- Java
- Stars
- 41.6k
- Forks
- 26.4k
- Avg merge
- 15h 13m
- Merged PRs (30d)
- 4
Description
### Pre-check
- [X] I am sure that all the content I provide is in English.
### Search before asking
- [X] I had searched in the [issues](https://github.com/apache/dubbo/issues?q=is%3Aissue) and found no similar feature requirement.
### 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?
- [X] Yes I am willing to submit a pull request on my own!
### Code of Conduct
- [X] I agree to follow this project's [Code of Conduct](https://www.apache.org/foundation/policies/conduct)
Contributor guide
Research direction
Start by reading TripleHttp2Protocol and TriHttp2RemoteFlowController, focusing on how dubbo.rpc.tri.initial-window-size and the environment-derived Http2Settings initialize the HTTP/2 window sizes. Reproduce or trace the flow-control setup and determine the intended single source of truth; done means the configured values remain consistent and the overflow no longer occurs.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend-api-design, distributed-systems, networking
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100