Yep, something seems to go wrong with the waitingFor field in
WindowAllocationManager.

We are developing a quite complex embedded cms application, don't know if I
will be able to share this application. Hopefully you can reproduce this
anyway by using the nghttp client and another large webapp? One thing to
notice is that we can't reproduce this by accessing the
webapplication directly with any browser, but with a f5-proxy in production
and nghttp it occurs almost every time.

/Erik

Den mån 28 juni 2021 kl 10:52 skrev Mark Thomas <ma...@apache.org>:

> On 27/06/2021 12:05, Erik Nilsson wrote:
> > We might have found an issue with the window size in http2 in Tomcat
> 9.0.45.
>
> Thanks for the heads up.
>
> 9.0.45 has fixes for all the known issues with window size management so
> this looks like a potential new bug.
>
> > java.lang.IllegalStateException: Connection [483], Stream [21], Already
> waiting
> >          at
> org.apache.coyote.http2.WindowAllocationManager.waitFor(WindowAllocationManager.java:143)
> >          at
> org.apache.coyote.http2.WindowAllocationManager.waitForConnection(WindowAllocationManager.java:84)
> >          at
> org.apache.coyote.http2.Stream.waitForConnectionAllocation(Stream.java:257)
> >          at
> org.apache.coyote.http2.Http2UpgradeHandler.reserveWindowSize(Http2UpgradeHandler.java:903)
> >          at
> org.apache.coyote.http2.Stream$StreamOutputBuffer.flush(Stream.java:904)
> >          at
> org.apache.coyote.http2.Stream$StreamOutputBuffer.doWrite(Stream.java:823)
> >          at
> org.apache.coyote.http2.Http2OutputBuffer.doWrite(Http2OutputBuffer.java:59)
> >          at org.apache.coyote.Response.doWrite(Response.java:606)
> >          at
> org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:340)
> >          at
> org.apache.catalina.connector.OutputBuffer.appendByteArray(OutputBuffer.java:753)
> >          at
> org.apache.catalina.connector.OutputBuffer.append(OutputBuffer.java:682)
> >          at
> org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:388)
> >          at
> org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:366)
> >          at
> org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:96)
> >          at
> org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:89)
> >
> >
> > This problem occurs when we are using the nghttp client to receive
> > data from our root page (nghttp -vnsay https://localhost). By
> > decreasing the initial window size to 8 kb in nghttp (flag -w 13), the
> > problem disappears. Another solution is to set the http2-connector
> > attribute maxConcurrentStreamExecution="1".
>
> Hmm. That suggests some sort of concurrency issue.
>
> How easy is this to reproduce? I'll see if I can reproduce this locally
> but it may well depend on the structure of the page you are testing with.
>
> Mark
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
>
>

-- 

Reply via email to