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 2015/03/10 15:54:40 UTC

[Bug 57683] New: Crash of stockticket async example caused by an aborted client request

https://bz.apache.org/bugzilla/show_bug.cgi?id=57683

            Bug ID: 57683
           Summary: Crash of stockticket async example caused by an
                    aborted client request
           Product: Tomcat 7
           Version: 7.0.59
          Hardware: PC
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Examples
          Assignee: dev@tomcat.apache.org
          Reporter: knst.kolinko@gmail.com

I mentioned this issue in "Time for 7.0.60" thread on dev@.

It is a bug with error handling in example webapp. It is not a regression from
recent changes. It is reproducible with 7.0.59.

Steps to reproduce:
Using Tomcat 7.0.59, JDK 6u45.

1. Start Tomcat

2. Visit stockicker example,
http://localhost:8080/examples/async/stockticker

3. Abort the request while the page is being loaded (Press "Esc" key on
keyboard)

4. Re-visit the example
http://localhost:8080/examples/async/stockticker

Expected: Working stockicker example.

Actual:
1) Browser waits for a response. After several seconds the progress indicator
stops. A blank page is displayed.

2) Access log shows response status 200, but byte counter is zero ("-").

127.0.0.1 - - [10/Mar/2015:17:45:31 +0300] "GET /examples/async/stockticker
HTTP/1.1" 200 -

3) Looking into catalina.2015-03-10.log, there is the following exception:
[[[
10.03.2015 17:36:58 org.apache.coyote.AbstractProcessor setErrorState
INFO: An error occurred in processing while on a non-container thread. The
connection will be closed immediately
java.net.SocketException: Software caused connection abort: 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.realWriteBytes(InternalOutputBuffer.java:215)
    at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:480)
    at
org.apache.coyote.http11.InternalOutputBuffer.flush(InternalOutputBuffer.java:119)
    at
org.apache.coyote.http11.AbstractHttp11Processor.action(AbstractHttp11Processor.java:800)
    at org.apache.coyote.Response.action(Response.java:172)
    at
org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:363)
    at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:331)
    at org.apache.catalina.connector.CoyoteWriter.flush(CoyoteWriter.java:98)
    at async.AsyncStockServlet.writeStock(AsyncStockServlet.java:98)
    at async.AsyncStockServlet.tick(AsyncStockServlet.java:81)
    at async.Stockticker.run(Stockticker.java:84)
    at java.lang.Thread.run(Thread.java:662)
]]]

4) Looking at console,
There is the same exception as in "3)",
followed by the following exception:
[[[
java.lang.IllegalStateException: The request associated with the AsyncContext
has already completed processing.
        at
org.apache.catalina.core.AsyncContextImpl.check(AsyncContextImpl.java
:553)
        at
org.apache.catalina.core.AsyncContextImpl.getResponse(AsyncContextImp
l.java:265)
        at async.AsyncStockServlet.writeStock(AsyncStockServlet.java:86)
        at async.AsyncStockServlet.tick(AsyncStockServlet.java:81)
        at async.Stockticker.run(Stockticker.java:84)
        at java.lang.Thread.run(Thread.java:662)
]]]

Essentially, the async.Stockticker thread crashed due to a non handled ISE.
This explains the behaviour.

5) The exception in "4)" is logged to the console only. It is not logged into
Tomcat log files.

-- 
You are receiving this mail because:
You are the assignee for the bug.

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


[Bug 57683] Crash of stockticket async example caused by an aborted client request

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=57683

Mark Thomas <ma...@apache.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
             Status|NEW                         |RESOLVED
                 OS|                            |All

--- Comment #1 from Mark Thomas <ma...@apache.org> ---
Fixed in trunk 8.0.x (for 8.0.21 onwards) and 7.0.x (for 7.0.60 onwards).

-- 
You are receiving this mail because:
You are the assignee for the bug.

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