On 18/11/2022 10:21, Mark Thomas wrote:
On 17/11/2022 20:01, Gonzalo Fernandez wrote:

<snip/>

The problem happens when a client with an open TCP / HTTP2 connection
sends multiple incomplete streams, which seems to block the connection
forever and not be able to accept new streams.

In detail, using tcpdump, we are seeing that the Tomcat Server
receives the HEADER frame, but never receives the following DATA
frames for a stream. After 20 seconds (streamReadTimeout default
value), the Tomcat Server throws a "client timeout" exception
(stacktrace at the end of the mail), and returns "400 Bad Request"
followed by a RST_STREAM frame.
The problem is that when the amount of incomplete streams surpasses
the value of "maxConcurrentStreams", the connection starts to return
RST_STREAM to any new stream indefinitely, it never recovers. I
verified this by changing the value of that property and looking at
the number of streams in every connection. When the value wasn't
defined, it took 100 incomplete streams over the same connection to
break it, then I changed to 20 and it took 20 incomplete streams to
break it.

This makes me suspicious that the concurrent streams counter isn't
being decreased when this happens, and could possibly be a bug. I
tried to identify this in the tomcat codebase but I am not familiar
enough with it.

Thanks for the very detailed description.

Your suspicion is correct. There is a Tomcat bug here. I have been able to write a test case that demonstrates the bug and am working on a fix.

I just wanted to say how much the effort you put into researching this is appreciated. Your report has exactly the right amount of detail we need. Enough to see exactly what the problem is and to recreate the problem and no unnecessary extra information.

I should have a patch for this shortly.

Fixed in:
- 10.1.x for 10.1.3  onwards
-  9.0.x for  9.0.70 onwards
-  8.5.x for  8.5.85 onwards

Mark

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to