|Summary:||IllegalStateException after calling AsyncContext.dispatch|
|Product:||Tomcat 8||Reporter:||marko asplund <marko.asplund>|
|Component:||Catalina||Assignee:||Tomcat Developers Mailing List <dev>|
Description marko asplund 2014-07-17 08:15:47 UTC
Requests timeout occasionally with the following error after calling AsyncContext.dispatch: 10-Jul-2014 01:40:33.145 SEVERE [http-nio-8080-exec-2] org.apache.catalina.connector.CoyoteAdapter.asyncDispatch Exception while processing an asynchronous request java.lang.IllegalStateException: Calling [asyncTimeout()] is not valid for a request with Async state [DISPATCHING] at org.apache.coyote.AsyncStateMachine.asyncTimeout(AsyncStateMachine.java:267) ... Happens also with the Java Blocking Connector (Http11Protocol). Could not reproduce on Tomcat 7.0.54. Can be reproduced with the sample project with the following request: http://localhost:8080/servlet3-async/error2?fail=true Sample code and more information about the test can be found here: https://github.com/marko-asplund/servlet3-async Verified on: Ubuntu 14.04 / OpenJDK 1.7.0_55 Mac OS X 10.8.5 / Oracle Java 1.7.0_55
Comment 1 Mark Thomas 2014-08-07 10:34:32 UTC
This has been fixed in 8.0.x for 8.0.11 onwards. There were actually two problems here. The first was that calls to dispatch() from threads started with AsyncContext.start(Runnable) were not being processed until the AsyncContext timed out. The second was a rare timing issue made much more likely by the previous bug. The timing issue has also been fixed in 7.0.x for 7.0.56 onwards.