apache / apache/dubbo

[Feature] TotalPendingBytes size overflow Exception

Open
#14,635 1 comment 0 reactions 0 assignees View on GitHub
component/need-triage type/need-triage
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.