Setup is Apache HTTPD 2.4, Tomcat 8.5 (also v9.0.12), java 1.8.0 -191 (also on OpenJDK 11), Lucee 5.3, Windows 10 64b. Pretty much stock configs of Tomcat and Apache and Lucee.
Apache vhosts proxy setup like this:
ProxyPreserveHost On ProxyPassMatch ^/(.+\.cf[cm])(/.*)?$ ajp://127.0.0.1:8009/$1$2
When testing sites on DEV I was getting 503 errors. I’d notice Tomcat logs would have these errors:
`
06-Nov-2018 12:29:31.466 SEVERE [ajp-nio-8009-exec-10] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [CFMLServlet] in context with path [] threw exception
java.lang.IllegalThreadStateException
at java.lang.Thread.start(Unknown Source)
at lucee.runtime.spooler.SpoolerEngineImpl.start(SpoolerEngineImpl.java:165)
at lucee.runtime.spooler.SpoolerEngineImpl.add(SpoolerEngineImpl.java:154)
at lucee.runtime.CFMLFactoryImpl.releaseLuceePageContext(CFMLFactoryImpl.java:210)
at lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1106)
at lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1037)
at lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:102)
at lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:479)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
Exception in thread “ajp-nio-8009-exec-10” java.lang.IllegalMonitorStateException
at java.util.concurrent.locks.ReentrantLock$Sync.tryRelease(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.release(Unknown Source)
at java.util.concurrent.locks.ReentrantLock.unlock(Unknown Source)
at java.util.concurrent.LinkedBlockingQueue.take(Unknown Source)
at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:103)
at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:31)
at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
`
and Apache log would simultaneously have something like this:
[Tue Nov 06 11:55:08.158259 2018] [proxy_ajp:error] [pid 8372:tid 1396] (70014)End of file found: AH01030: ajp_ilink_receive() can't receive header [Tue Nov 06 11:55:08.158259 2018] [proxy_ajp:error] [pid 8372:tid 1396] [client ::1:56450] AH00992: ajp_read_header: ajp_ilink_receive failed, referer: http://supersimple.localhost/ [Tue Nov 06 11:55:08.158259 2018] [proxy_ajp:error] [pid 8372:tid 1396] (120006)APR does not understand this error code: [client ::1:56450] AH00878: read response failed from (null) (*), referer: http://supersimple.localhost/
All sites become unresponsive. If I hit any site without Apache (i.e. over port 8080) I can still access it fine. The only fix is a complete Tomcat restart.
To debug and remove any chance it was my code, I downloaded the latest advanced script template and slowly turned on features. It seems that with debug mode on and showing only the CachePanel and a couple of F5 refreshes would produce the errors above. Turning off CachePanel and I cannot make it crash.