You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bu...@apache.org on 2003/03/21 19:50:56 UTC
DO NOT REPLY [Bug 18233] New: -
CoyoteOuputStream throws exception when closing
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