Open ktalg opened 3 weeks ago
The docs you linke are quite old, v1.19.5. The current docs say, for a downstream connection, that if there are active streams the drain sequence is initiated. (https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/protocol.proto#config-core-v3-httpprotocoloptions)
The docs you linke are quite old, v1.19.5. The current docs say, for a downstream connection, that if there are active streams the drain sequence is initiated. (https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/protocol.proto#config-core-v3-httpprotocoloptions)
Thank you. The latest version of the documentation state:
max_connection_duration
:
If the connection is a downstream connection and there are any active streams, the drain sequence will kick in, and the connection will be force-closed after the drain period.
and
drain_timeout
:
The time that Envoy will wait between sending an HTTP/2 “shutdown notification” (GOAWAY frame with max stream ID) and a final GOAWAY frame. Draining occurs both when a connection hits the idle timeout or during general server draining.
This still does not resolve my confusion. If a TCP connection has continuously active streams, after both max_connection_duration
and drain_timeout
have expired, will the stream be be force-closed, or will Envoy send two GOAWAY frames and then wait for certain conditions (hits the idle timeout or during general server draining
) before closing the connection?
@ktalg if you were able to raise a PR to clarify the docs i would be happy to review
Title: One line description when max_connection_time and drain_timeout reached,the http2 connection wouldn't be closed if there's any active stream, which does not match what doc says
Description:
according to: https://www.envoyproxy.io/docs/envoy/v1.19.5/api-v3/config/core/v3/protocol.proto#config-core-v3-httpprotocoloptions
But recently I ran a test and looked at the client trace logs:
After the second goaway, the server does not actively close the connection (stream exists) until the client closes (30 seconds later). Is this behavior correct? Or maybe I missed something.