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

http3: add shutdown notification support #13332

Merged
merged 2 commits into from
Oct 2, 2020

Conversation

akonradi
Copy link
Contributor

Commit Message: Add shutdown notification support for HTTP3
Additional Description:
Use the newly-added quiche support for sending an advisory GOAWAY frame
on HTTP3 connections when an Envoy starts draining a connection.

Risk Level: low
Testing: ran quiche codec and integration tests
Docs Changes: none
Release Notes: none

Use the newly-added quiche support for sending an advisory GOAWAY frame
on HTTP3 connections when an Envoy starts draining a connection.

Signed-off-by: Alex Konradi <[email protected]>
Copy link
Contributor

@danzh2010 danzh2010 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for doing this!

@@ -47,10 +47,7 @@ class QuicHttpServerConnectionImpl : public QuicHttpConnectionImplBase,

// Http::Connection
void goAway() override;
void shutdownNotice() override {
// TODO(danzh): Add double-GOAWAY support in QUIC.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you leave the TODO there? It's not implemented in QUICHE yet. Or is it already implemented somehow in Envoy HCM? And shutdownNotice() is just part of the work flow?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

HCM already calls shutdownNotice(), which is used to send a first GOAWAY for H2 but it wasn't implemented by the quiche codec. This PR plugs the support I added in quiche into Envoy to get the equivalent behavior for H3.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK. Thanks for doing this!

danzh2010
danzh2010 previously approved these changes Oct 1, 2020
@mattklein123 mattklein123 self-assigned this Oct 1, 2020
Copy link
Member

@mattklein123 mattklein123 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small comment, thanks.

/wait

if (quic::VersionUsesHttp3(quic_server_session_.transport_version())) {
quic_server_session_.SendHttp3Shutdown();
} else {
ENVOY_CONN_LOG(error, "Shutdown notice is not propagated to QUIC.", quic_server_session_);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems like it could spam pretty badly? Should this be a debug log or a rate limited log variabt?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Debug should be fine since this doesn't affect correctness. Also, the log line is only seen for older versions of HTTP-over-QUIC, which should be disappearing as HTTP3 nears standardization.

Copy link
Member

@mattklein123 mattklein123 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@mattklein123 mattklein123 merged commit cdb8264 into envoyproxy:master Oct 2, 2020
@akonradi akonradi deleted the quic-shutdown branch October 5, 2020 15:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants