Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug] Is there any graceful way to prevent running out of http2 stream id in Dubbo3.x #14098

Open
4 tasks done
PaulTan94 opened this issue Apr 17, 2024 · 4 comments · May be fixed by #14209
Open
4 tasks done

[Bug] Is there any graceful way to prevent running out of http2 stream id in Dubbo3.x #14098

PaulTan94 opened this issue Apr 17, 2024 · 4 comments · May be fixed by #14209
Labels
component/need-triage Need maintainers to triage type/need-triage Need maintainers to triage

Comments

@PaulTan94
Copy link

Pre-check

  • I am sure that all the content I provide is in English.

Search before asking

  • I had searched in the issues and found no similar issues.

Apache Dubbo Component

Java SDK (apache/dubbo)

Dubbo Version

Dubbo 3.x

Steps to reproduce this issue

Based on the discussion in #13731, I think it is an improper way to make a reconnection triggered by GoAwayFrame(stream id exhausted) cause there will be 100% request failure before the new connection being active and it is unacceptable for production scenario. To make sure the connection is consistently available, is it possible to make a new connection before the stream id is about to be exhausted?

What you expected to happen

  1. Make a new connection before the stream id is about to be exhausted.

Anything else

No response

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

  • Yes I am willing to submit a pull request on my own!

Code of Conduct

@PaulTan94 PaulTan94 added component/need-triage Need maintainers to triage type/need-triage Need maintainers to triage labels Apr 17, 2024
@AlbumenJ
Copy link
Member

AlbumenJ commented May 8, 2024

@EarthChen @icodening PTAL

BTW, I also want to know if there is a good way

@icodening icodening linked a pull request May 18, 2024 that will close this issue
8 tasks
@icodening
Copy link
Contributor

I think should be reconnect when throw Http2NoMoreStreamIdsException, and the message will be suspend until stream is create success.

@oxsean
Copy link
Collaborator

oxsean commented May 18, 2024

Is it possible to proactively reconnect instead of waiting for an exception to occur?

@FoghostCn
Copy link
Contributor

FoghostCn commented May 19, 2024

According to https://datatracker.ietf.org/doc/rfc9113/ 5.1.1

Stream identifiers cannot be reused. Long-lived connections can result in an endpoint exhausting the available range of stream identifiers. A client that is unable to establish a new stream identifier can establish a new connection for new streams. A server that is unable to establish a new stream identifier can send a GOAWAY frame so that the client is forced to open a new connection for new streams.

May be Http2NoMoreStreamIdsException is not required, we should reconnect automatically

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component/need-triage Need maintainers to triage type/need-triage Need maintainers to triage
Projects
Status: Todo
Development

Successfully merging a pull request may close this issue.

5 participants