On 08/03/2022 23:52, Konstantin Kolinko wrote:
пн, 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.java: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.java:59)
                 at org.apache.coyote.Response.doWrite(Response.java:625)
                 at 
org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:340)
                 at 
org.apache.catalina.connector.OutputBuffer.flushByteBuffer(OutputBuffer.java:783)
                 at 
org.apache.catalina.connector.OutputBuffer.realWriteChars(OutputBuffer.java:453)
                 at 
org.apache.catalina.connector.OutputBuffer.flushCharBuffer(OutputBuffer.java: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.

The ISE would be down to me. It was a few years ago now but it looks like I wrote that code on the basis that it would only happen if the application did something it shouldn't. Given that it can be triggered by the client dropping the connection I'll change it to IOE (assuming all the tests pass).

Mark

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

Reply via email to