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 Graceful Shutdown With GOAWAYs #388

Open
jordan-wu-97 opened this issue Sep 18, 2024 · 0 comments
Open

HTTP2 Graceful Shutdown With GOAWAYs #388

jordan-wu-97 opened this issue Sep 18, 2024 · 0 comments
Assignees
Labels
enhancement New feature or request

Comments

@jordan-wu-97
Copy link

jordan-wu-97 commented Sep 18, 2024

What is the problem your feature solves, or the need it fulfills?

HTTP2 not gracefully shutting down connections with a GOAWAY.
As a result, more requests can be started on an open HTTP2 connection even after shutdown started.
Requests will then be abruptly dropped after the grace period ends.

Describe the solution you'd like

On server shutdown, we would want the server to send a GOAWAY to the client so that it doesn't send any new requests on the connection, while allowing in flight requests to complete.

I have a fork that does this: groq#1

Describe alternatives you've considered

N/A

Additional context

We are using the Go GRPC client, which expects a GOAWAY from the server before terminating
https://grpc.github.io/grpc/core/md_doc__p_r_o_t_o_c_o_l-_h_t_t_p2.html. GRPC clients that implement client side load balancing will know to move off of this connection.

Currently, the client does not know that the server is shutting down, and is able to make more requests through the connection while the server is in the shutdown process.

Note we are only using SIGTERM shutdown, not the SIGQUIT shutdown, so solution as described may not be compatible with the SIGQUIT shutdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants