чт, 10 мар. 2022 г. в 18:16, Thomas Hoffmann (Speed4Trade GmbH)
<thomas.hoffm...@speed4trade.com.invalid>:
>
> > -----Ursprüngliche Nachricht-----
> > Von: Konstantin Kolinko <knst.koli...@gmail.com>
> > Gesendet: Mittwoch, 9. März 2022 00:52
> > An: Tomcat Users List <users@tomcat.apache.org>
> > Betreff: Re: Many IllegalStateException when using http2 protocol
> >
> > пн, 7 мар. 2022 г. в 16:26, Thomas Hoffmann (Speed4Trade GmbH)
> > <thomas.hoffm...@speed4trade.com.invalid>:
> > >
> > > Hello,
> > >
> > > Since upgrading from Tomcat 9.0.56 to Tomcat 10.0.16, the 
> > > localhost-logfile
> > is filling up with stacks of the form:
> > >
> > > 07-Mar-2022 07:24:01.780 SCHWERWIEGEND [https-openssl-nio-443-exec-
> > 21] org.apache.catalina.core.ApplicationDispatcher.invoke Servlet.service()
> > for servlet [jsp] threw exception
> > >         java.lang.IllegalStateException: Connection [66], Stream [113], 
> > > Unable
> > to write to stream once it has been closed
> > >                 at
> > org.apache.coyote.http2.Stream$StreamOutputBuffer.doWrite(Stream.java:
> > 843)
> > >                 at
> > org.apache.coyote.http11.filters.GzipOutputFilter$FakeOutputStream.write(
> > GzipOutputFilter.java:159)
> > >                 at
> > java.base/java.util.zip.DeflaterOutputStream.deflate(DeflaterOutputStream.
> > java:252)
> > >                 at
> > java.base/java.util.zip.DeflaterOutputStream.write(DeflaterOutputStream.ja
> > va:210)
> > >                 at
> > java.base/java.util.zip.GZIPOutputStream.write(GZIPOutputStream.java:148
> > )
> > >                 at
> > org.apache.coyote.http11.filters.GzipOutputFilter.doWrite(GzipOutputFilter.
> > java:69)
> > >                 at
> > org.apache.coyote.http2.Http2OutputBuffer.doWrite(Http2OutputBuffer.jav
> > a:59)
> > >                 at org.apache.coyote.Response.doWrite(Response.java:625)
> > >                 at
> > org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.ja
> > va:340)
> > >                 at
> > org.apache.catalina.connector.OutputBuffer.flushByteBuffer(OutputBuffer.j
> > ava:783)
> > >                 at
> > org.apache.catalina.connector.OutputBuffer.realWriteChars(OutputBuffer.ja
> > va:453)
> > >                 at
> > org.apache.catalina.connector.OutputBuffer.flushCharBuffer(OutputBuffer.j
> > ava:788)
> > >                 at
> > org.apache.catalina.connector.OutputBuffer.append(OutputBuffer.java:727)
> > >                 at
> > org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:505)
> > >                 at
> > org.apache.catalina.connector.CoyoteWriter.write(CoyoteWriter.java:148)
> > >                 at
> > org.apache.catalina.filters.ExpiresFilter$XPrintWriter.write(ExpiresFilter.java:
> > 850)
> > >                 at
> > org.apache.jasper.runtime.JspWriterImpl.write(JspWriterImpl.java:275)
> > >                 at 
> > > java.base/java.io.PrintWriter.write(PrintWriter.java:506)
> > >                 at
> > org.apache.jasper.runtime.JspWriterImpl.write(JspWriterImpl.java:275)
> > >                 at 
> > > java.base/java.io.PrintWriter.write(PrintWriter.java:506)
> > >                 at
> > org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:112
> > )
> > >                 at
> > org.apache.jasper.runtime.JspWriterImpl.flush(JspWriterImpl.java:160)
> > >                 at
> > org.apache.jsp.WEB_002dINF.jsp.businessrelations.ticket_005frelations_inc_
> > jsp._jspService(ticket_005frelations_inc_jsp.java:702)
> > >                 ...
> > >
> > > The jsp-file varies between the stacktraces, so it is not related to a 
> > > certain
> > jsp-File.
> > > The stream.java looks like (which didn’t change from Tomcat 9 to 10):
> > >         @Override
> > >         public final synchronized int doWrite(ByteBuffer chunk) throws
> > IOException {
> > >             if (closed) {
> > >                 throw new IllegalStateException(
> > >                         sm.getString("stream.closed",
> > > getConnectionId(), getIdAsString()));
> >
> > I wonder why it throws an ISE here, instead of a proper IOException as
> > declared by this method.
> > (It looks like a bug, but I have not investigated the history of this code 
> > yet.)
> >
> > There is nothing suspicious in the stacktrace. An unusual bit of 
> > configuration
> > here is having enabled a GzipOutputFilter.
> >
> > Best regards,
> > Konstantin Kolinko
>
> Good observation about the GZip-Filter!
> We are using compression="force" in our connector.
> I modified some http2 settings (raised some limits) and set compression="off" 
> ... up to now, the error disappeared.
> As I modified several settings, I will carefully revert the changes step by 
> step to figure out which connector parameter is causing this error.
> Maybe the GZip-Filter doesn’t work well with the http2 protocol in tomcat.
> I will investigate and post the results.

Mark has already changed that IllegalStateException to an IOException,
and that is included into  10.0.18 that has already been tagged and is
currently being voted for an official release.

You may take part in the testing. See VOTE thread on the dev mailing
list for links.

Best regards,
Konstantin Kolinko

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

Reply via email to