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

Supporting HTTP/2 on the producer interface requires unbounded memory allocation #56

Closed
jorgebay opened this issue Oct 14, 2022 · 1 comment · Fixed by #57
Closed

Supporting HTTP/2 on the producer interface requires unbounded memory allocation #56

jorgebay opened this issue Oct 14, 2022 · 1 comment · Fixed by #57
Assignees
Labels
bug Something isn't working
Milestone

Comments

@jorgebay
Copy link
Contributor

jorgebay commented Oct 14, 2022

HTTP/2 breaks request and responses into multiple streamids.

Unlike other protocols like the Cassandra protocol, it can interleave partial requests/responses.

On the producing server side this is a problem as we can't independently move forward a request body without moving the whole stream forward.

@jorgebay jorgebay added the bug Something isn't working label Oct 14, 2022
@jorgebay jorgebay added this to the 0.3.0 milestone Oct 14, 2022
@jorgebay jorgebay self-assigned this Oct 14, 2022
@jorgebay
Copy link
Contributor Author

We should remove support for HTTP/2 on the producer interface, continuing support for HTTP/1+.

I've benchmarked using HTTP/1.1 that has request pipelining and the results are the similar (I'll publish a new set of results).

There's no much benefit for supporting HTTP/2 on the producer side, specially if it comes at the price of not being able to cap memory usage.

jorgebay added a commit that referenced this issue Oct 14, 2022
HTTP/2 can break request and responses into multiple streamids
each, interleaving _partial_ request bodies.
If we don't allocate memory to read in parrallel, we can't
independently move forward a request body without moving the
whole stream forward. The resolution is to remove HTTP/2 support.

Fixes #56.
jorgebay added a commit that referenced this issue Oct 17, 2022
HTTP/2 can break request and responses into multiple streamids
each, interleaving _partial_ request bodies.
If we don't allocate memory to read in parrallel, we can't
independently move forward a request body without moving the
whole stream forward. The resolution is to remove HTTP/2 support.

Fixes #56.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant