tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bugzi...@apache.org
Subject DO NOT REPLY [Bug 18233] New: - CoyoteOuputStream throws exception when closing
Date Fri, 21 Mar 2003 18:50:56 GMT
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=18233>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=18233

CoyoteOuputStream throws exception when closing

           Summary: CoyoteOuputStream throws exception when closing
           Product: Tomcat 4
           Version: 4.1.18
          Platform: All
        OS/Version: Windows NT/2K
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: Connector:Coyote HTTP/1.1
        AssignedTo: tomcat-dev@jakarta.apache.org
        ReportedBy: jonathan.gray@netdecisions.com


Whilst printing a String to the ServletOuputStream, if the user presses 
the 'stop' button on their browser then an IOException is thrown.  It is 
standard practice to try and close resources when an error occurs but when I 
try to close the stream I get another IOException (Connection reset by peer) 
because the close() method is trying to flush the stream.

Now, either it is standard practice to not call close() or to ignore the 
exception but either of these means that the client is not confident that all 
the resources around the stream were cleaned up.  I consider this a usability 
bug and possibly a functional bug, I don't really have time to investigate in 
the code any further to see whether the stream not being cleaned up causes any 
problems.

Below is the stack trace that is thrown when trying to call close() on the 
ServletOuputStream using Tomcat 4.1.18, Java 1.4.1_02 under Windows 2K SP3:

  java.net.SocketException: Connection reset by peer: socket write error
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
        at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
        at 
org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite
(InternalOutputBuffer.java:668)

        at org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite
(ChunkedOutputFilter.java:166)
        at org.apache.coyote.http11.InternalOutputBuffer.doWrite
(InternalOutputBuffer.java:523)
        at org.apache.coyote.Response.doWrite(Response.java:524)
        at org.apache.coyote.tomcat4.OutputBuffer.realWriteBytes
(OutputBuffer.java:384)
        at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:360)
        at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:338)
        at org.apache.tomcat.util.buf.IntermediateOutputStream.write
(C2BConverter.java:273)
        at sun.nio.cs.StreamEncoder$CharsetSE.writeBytes(StreamEncoder.java:334)
        at sun.nio.cs.StreamEncoder$CharsetSE.implFlushBuffer
(StreamEncoder.java:402)
        at sun.nio.cs.StreamEncoder$CharsetSE.implFlush(StreamEncoder.java:406)
        at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:150)
        at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:213)
        at org.apache.tomcat.util.buf.WriteConvertor.flush
(C2BConverter.java:222)
        at org.apache.tomcat.util.buf.C2BConverter.flushBuffer
(C2BConverter.java:165)
        at org.apache.coyote.tomcat4.OutputBuffer.realWriteChars
(OutputBuffer.java:580)
        at org.apache.tomcat.util.buf.CharChunk.flushBuffer(CharChunk.java:388)
        at org.apache.coyote.tomcat4.OutputBuffer.close(OutputBuffer.java:313)
        at org.apache.coyote.tomcat4.CoyoteOutputStream.close
(CoyoteOutputStream.java:125)

---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org


Mime
View raw message