Skip to content

Commit 9773bc3

Browse files
committed
Fix BZ 69870 - add drainTimeout to HTTP/2
1 parent 98f6e22 commit 9773bc3

3 files changed

Lines changed: 24 additions & 5 deletions

File tree

java/org/apache/coyote/http2/Http2Protocol.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -129,11 +129,11 @@ public class Http2Protocol implements UpgradeProtocol {
129129

130130
/*
131131
* Additional time in nanoseconds between sending the first graceful GOAWAY (max stream id) and the final GOAWAY
132-
* (last seen stream id). During this time the server will continue to process new streams on the connection.
133-
* This is to mitigate the race of client-buffered/sent packets for new streams and the final GOAWAY (with last
134-
* seen stream id). By default, Tomcat uses the last computed RTT for this interval, but the RTT might have
135-
* fluctuated due to network or server load conditions, or the client (e.g. nghttp2) might have already buffered
136-
* frames for opening new streams on a connection.
132+
* (last seen stream id). During this time the server will continue to process new streams on the connection. This
133+
* is to mitigate the race of client-buffered/sent packets for new streams and the final GOAWAY (with last seen
134+
* stream id). By default, Tomcat uses the last computed RTT for this interval, but the RTT might have fluctuated
135+
* due to network or server load conditions, or the client (e.g. nghttp2) might have already buffered frames for
136+
* opening new streams on a connection.
137137
*
138138
* The name "drainTimeout" is taken from Envoy proxy's identical HTTP Connection Manager property and means exactly
139139
* the same.

webapps/docs/changelog.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,13 @@
136136
<code>CBC</code>when setting the <code>ciphers</code> attribute of
137137
an <code>SSLHostConfig</code> element. (markt)
138138
</fix>
139+
<add>
140+
<bug>69870</bug>: Add a <code>drainTimeout</code> to the HTTP/2
141+
<code>UpgradeProtocol</code> element to allow configuration of an
142+
time between the two final <code>GOAWAY</code> frames sent by Tomcat
143+
when closing am HTTP/2 connection. Pull request <pr>917</pr> provided by
144+
Kai Burjack. (markt)
145+
</add>
139146
</changelog>
140147
</subsection>
141148
<subsection name="Jasper">

webapps/docs/config/http2.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,18 @@
134134
If not specified, this attribute is set to <code>false</code>.</p>
135135
</attribute>
136136

137+
<attribute name="drainTimpout" required="false">
138+
<p>Additional time in nanoseconds between sending the first graceful
139+
GOAWAY (max stream id) and the final GOAWAY (last seen stream id). During
140+
this time the server will continue to process new streams on the
141+
connection. This is to mitigate the race of client-buffered/sent packets
142+
for new streams and the final GOAWAY (with last seen stream id). By
143+
default, Tomcat uses the last computed RTT for this interval, but the RTT
144+
might have fluctuated due to network or server load conditions, or the
145+
client might have already buffered frames for opening new streams on a
146+
connection. If not specified, this attribute is set to <code>0</code>.</p>
147+
</attribute>
148+
137149
<attribute name="initialWindowSize" required="false">
138150
<p>Controls the initial size of the flow control window for streams that
139151
Tomcat advertises to clients. If not specified, the default value of

0 commit comments

Comments
 (0)