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

HTTP2 FlowControl Window depleted #9589

Open
AlfredoG87 opened this issue Dec 12, 2024 · 0 comments
Open

HTTP2 FlowControl Window depleted #9589

AlfredoG87 opened this issue Dec 12, 2024 · 0 comments

Comments

@AlfredoG87
Copy link

AlfredoG87 commented Dec 12, 2024

Helidon 4.x Http2 Outbound Flow Control has a Bug on how it calculates the Window Size.

We believe that the strategy in place is bugged and is running on a deficit on the calculated window size available on the client.

This happens on an outbound grpc stream, for easy replication we modified one of your examples for a gRPC WebServer with the following changes.

  1. The Split stream will stream the first word indefinitively.
  2. We commented out the test for such method, since we changed the behaviour of the method to showcase the bug.

You can see the full source code here --> https://github.com/AlfredoG87/helidon-examples/tree/helidon-4.x/examples/webserver/grpc

Environment Details

  • Helidon Version: 4.1.4
  • Helidon SE
  • JDK version: 21
  • OS: MacOs

Problem Description

The WebServer (gRPC) stops streaming after a short amount of time.

Does not appears to happen always in the same way, sometimes it takes longer to happen, but does always happens, only precondition is for outbound stream messages to be large and sustained.

You can see a video showing how the window size becomes negative, never recovers and the server stops streaming on the attached video.

Helidon.Http2.FlowControl.Window.Depleted.mp4

image

Steps to reproduce

Fork the following project: https://github.com/AlfredoG87/helidon-examples/tree/helidon-4.x/examples/webserver/grpc

Or apply the following commit or changes to your own copy of helidon-examples repo.

Run application, consume Split method with at least 2 words as input, the first one a large amount of lenght.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Triage
Development

No branches or pull requests

1 participant