I use async servlet, It is easy to reproduce. tomcat 8.5.8, jdk 1.8.0_65-b17, linux 2.6.32-573.22.1.el6.x86_64 Exception in thread "http-nio-8080-AsyncTimeout" java.lang.NullPointerException at org.apache.coyote.AbstractProcessor.doTimeoutAsync(AbstractProcessor.java:528) at org.apache.coyote.AbstractProcessor.timeoutAsync(AbstractProcessor.java:518) at org.apache.coyote.AbstractProtocol$AsyncTimeout.run(AbstractProtocol.java:1130) at java.lang.Thread.run(Thread.java:745)
Let's pretend it is more difficult to reproduce than you think, then. Are you using HTTP/2 ?
No,I didn't use http2.0,my connector config: <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443" maxParameterCount="2000" maxKeepAliveRequests="-1" maxThreads="200" maxPostSize="20971520" acceptCount="1024" useBodyEncodingForURI="true" URIEncoding="UTF-8"/> It's happened in pressure test (high concurrency), one nginx reverse proxy to 4 tomcat server, All 4 tomcat server occurred that NPE。
Fixed in: - trunk for 9.0.0.M14 onwards - 8.5.x for 8.5.9 onwards 8.0.x and earlier are not affected