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
Fixes #6208 - HTTP/2 max local stream count exceeded #6220
Fixes #6208 - HTTP/2 max local stream count exceeded #6220
Conversation
Backported from Jetty 10 the "new stream" event so that the Stream can be set early on the client's `HttpChannelOverHTTP2`. In this way, when a HEADERS frame stalled due to TCP congestion is failed, the corresponding Stream is closed and the connection released to the pool, fixing the "max stream exceeded" issue. Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
@gregw @lorban see #6208 (comment) for an explanation of the issue. The fix is as follows:
|
Updates after review. Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM after peer review.
@Override | ||
public void commit() | ||
{ | ||
committed = true; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what is the memory barrier on this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The flag is set and read from the flusher thread, so the memory barrier is guaranteed by IteratingCallback
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Other than slight concern on memory barrier... looks OK.
Logic felt a bit special for RST, but then I think it is.
Backported from Jetty 10 the "new stream" event so that the Stream can be set early on the client's
HttpChannelOverHTTP2
.In this way, when a HEADERS frame stalled due to TCP congestion is failed, the corresponding Stream is closed and the connection released to the pool, fixing the "max stream exceeded" issue.
Signed-off-by: Simone Bordet simone.bordet@gmail.com