https://bz.apache.org/bugzilla/show_bug.cgi?id=59220
Bug ID: 59220
Summary: AsyncListener#onComplete not called after timeout if
buffer is flushed
Product: Tomcat 8
Version: 8.0.32
Hardware: PC
Status: NEW
Severity: normal
Priority: P2
Component: Catalina
Assignee: [email protected]
Reporter: [email protected]
If an async dispatch cycle is started and a timeout occurs before the response
buffer is flushed using response#flushBuffer(), then the
AsyncListener#onTimeout()
method followed by the AsyncListener#onComplete() are correctly called.
However, if the buffer is flushed before the timeout occurs, the
AsyncListener#onTimeout() method will be called, but the
AsyncListener#onComplete() will not be.
A sample servlet demonstrating the problem, AsyncDebugListener, is provided
at the following location:
https://github.com/msnicklous/AsyncDebug
Build the AsyncDebugListener module using 'mvn install' and deploy it on
Tomcat.
The service method and each of the AsyncListener methods logs output to the
AsyncListener.log file. You can follow execution by looking at the logs.
Assuming Tomcat is installed locally, you can use the following URLs:
1) No timeout - works correctly:
http://localhost:8080/AsyncDebugListener/ltest?reps=3
2) Timeout, no flush - works correctly:
http://localhost:8080/AsyncDebugListener/ltest?reps=3&timeout
3) Flush before timeout - error case:
http://localhost:8080/AsyncDebugListener/ltest?reps=3&timeout&flush
>From the logs, you will see that AsyncListener#onTimeout() was called, but
AsyncListener#onComplete() was not.
Thanks for having a look at this!
--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]