пн, 7 мар. 2022 г. в 16:26, Thomas Hoffmann (Speed4Trade GmbH)
<[email protected]>:
>
> 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.
Best regards,
Konstantin Kolinko
> }
>
> The generated java file from the jsp file only catches IOException:
> ...
> if (!(t instanceof jakarta.servlet.jsp.SkipPageException)){
> out = _jspx_out;
> if (out != null && out.getBufferSize() != 0)
> try {
> if (response.isCommitted()) {
> out.flush();
> } else {
> out.clearBuffer();
> }
> } catch (java.io.IOException e) {}
> if (_jspx_page_context != null)
> _jspx_page_context.handlePageException(t);
> else throw new ServletException(t);
> }
>
> It seems like the browser is sometimes closing the stream and this causes
> Tomcat to write exceptions in the localhost-logfile.
>
> Is there any way to prevent this?
> It is strange, that it didn’t happen with Tomcat 9 or maybe a Firefox-Update
> is causing the issue(?) Access-log shows Firefox 97.
>
> Greetings, Thomas
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]