https://bz.apache.org/bugzilla/show_bug.cgi?id=58157
Bug ID: 58157 Summary: RecycleRequiredException and missing AsyncListener.onTimeout call Product: Tomcat 7 Version: 7.0.59 Hardware: PC Status: NEW Severity: normal Priority: P2 Component: Catalina Assignee: dev@tomcat.apache.org Reporter: cg.throwa...@mailinator.com Created attachment 32916 --> https://bz.apache.org/bugzilla/attachment.cgi?id=32916&action=edit Servlet which starts asynchronous processing and intentionally waits for a timeout before dispatching to a static HTML file. Overview: When repeatedly polling an asynchronous servlet which (intentionally) times out, I occasionally see the following exception in the console: Jul 20, 2015 8:58:45 AM org.apache.catalina.connector.CoyoteAdapter checkRecycled INFO: Encountered a non-recycled request and recycled it forcedly. org.apache.catalina.connector.CoyoteAdapter$RecycleRequiredException at org.apache.catalina.connector.CoyoteAdapter.checkRecycled(CoyoteAdapter.java:590) at org.apache.coyote.http11.AbstractHttp11Processor.recycle(AbstractHttp11Processor.java:1809) at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.release(Http11NioProtocol.java:199) at org.apache.tomcat.util.net.NioEndpoint$Poller.cancelledKey(NioEndpoint.java:1100) at org.apache.tomcat.util.net.NioEndpoint$Poller.timeout(NioEndpoint.java:1466) at org.apache.tomcat.util.net.NioEndpoint$Poller.run(NioEndpoint.java:1234) at java.lang.Thread.run(Thread.java:745) This coincides with a request not receiving any response. The majority of times the servlet is called, the correct response is returned as expected once the request times out, however on occasion (sometimes within 1 min, sometimes not until 30 mins of successful requests have passed) I see this exception and AsyncListener.onTimeout() is never called to produce the response. Steps to reproduce: 0) Configure Tomcat to use the NIO connector 1) Deploy the attached TimeoutServlet (note: add a static HTML page 'timeout.html' to the root of the web application to serve as the timeout response). 2) Using a tool of your choice (I used JMeter), repeatedly send a request to the servlet and wait for the timeout response before sending the next request. Actual Results: Eventually, one of the requests will receive no response and the above exception will be written to the console. Expected Results: Every request should receive the timeout response (timeout.html) after 1 second and no exception should appear in the console. Additional Information: Appears to be very similar to https://bz.apache.org/bugzilla/show_bug.cgi?id=57011. -- You are receiving this mail because: You are the assignee for the bug. --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org