We recently switched to CF11 and converted some of our file downloads to use cfhtmltopdf. When there are multiple requests for PDFs the request start to hang as monitored in FusionReactor. I can replicate the issue by opening just three or four tabs and all requesting a PDF simultaneously. The stack trace shows the last CFM line processed was cfhtmltopdf. It then looks to be acquiring locks on something and then two or three of the requests hang in this state. Sometimes they eventually resolve (after 10 plus minutes), other times they are hung for hours. Can anyone shed some light on this thread dump or the issue? Its is maybe a CF Standard Edition thing where PDF creation is limited?
sun.misc.Unsafe.park(null:???)[Native Method]
- waiting on <0x46295456> (a java.util.concurrent.Semaphore$NonfairSync)
java.util.concurrent.locks.LockSupport.park(null:???)
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(null:???)
java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(null:???)
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(null:???)
java.util.concurrent.Semaphore.acquire(null:???)
coldfusion.featurerouter.edition.StandardServerEdition.acquireEnterpriseFeatureLock(StandardServerEdition.java:195)
- locked <0x5f893c6d> (a coldfusion.featurerouter.EFRContext)
coldfusion.featurerouter.edition.StandardServerEdition.allowFeature(StandardServerEdition.java:88)
coldfusion.featurerouter.FeatureRouter.allowFeature(FeatureRouter.java:113)
coldfusion.tagext.lang.HtmlToPdfTag.doStartTag(HtmlToPdfTag.java:807)
cfFileHandlerFunctions2ecfc1831761174$funcCREATEPDF.runFunction(D:\timeclock\lib\functions\FileHandlerFunctions.cfc:308)
coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:487)
coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:420)
coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:383)
coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95)
coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334)
coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:533)
coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:648)
coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:457)
coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2424)
cfTimecardController2ecfc2026185905$funcDOWNLOADHOURLYPDFTIMECARD.runFunction(D:\timeclock\system\controller\TimecardController.cfc:188)
coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:487)
coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:420)
coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:383)
coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95)
coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334)
coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:533)
coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:648)
coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:457)
coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2424)
coldfusion.tagext.lang.InvokeTag.doEndTag(InvokeTag.java:399)
coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2987)
cfApplication2ecfc1521604824$funcONCFCREQUEST.runFunction(D:\timeclock\system\Application.cfc:403)
coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:487)
coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:420)
coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:383)
coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95)
coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334)
coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:231)
coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:643)
coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:432)
coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:402)
coldfusion.runtime.AppEventInvoker.invokeWithReturn(AppEventInvoker.java:147)
coldfusion.runtime.AppEventInvoker.OnCfcRequest(AppEventInvoker.java:323)
coldfusion.filter.ApplicationFilter.callOnCFCMethod(ApplicationFilter.java:598)
coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:473)
coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:42)
coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40)
coldfusion.filter.PathFilter.invoke(PathFilter.java:142)
coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:94)
coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)
coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38)
coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:58)
coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)
coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
coldfusion.xml.rpc.CFCServlet.invoke(CFCServlet.java:156)
coldfusion.xml.rpc.CFCServlet.doPost(CFCServlet.java:348)
javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42)
coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
sun.reflect.GeneratedMethodAccessor100.invoke(null:???)
sun.reflect.DelegatingMethodAccessorImpl.invoke(null:???)
java.lang.reflect.Method.invoke(null:???)
com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:97)
com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doNext(FusionReactorRequestHandler.java:472)
com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doHttpServletRequest(FusionReactorRequestHandler.java:312)
com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doFusionRequest(FusionReactorRequestHandler.java:192)
com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.handle(FusionReactorRequestHandler.java:507)
com.intergral.fusionreactor.j2ee.filter.FusionReactorCoreFilter.doFilter(FusionReactorCoreFilter.java:36)
sun.reflect.GeneratedMethodAccessor99.invoke(null:???)
sun.reflect.DelegatingMethodAccessorImpl.invoke(null:???)
java.lang.reflect.Method.invoke(null:???)
com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:79)
sun.reflect.GeneratedMethodAccessor98.invoke(null:???)
sun.reflect.DelegatingMethodAccessorImpl.invoke(null:???)
java.lang.reflect.Method.invoke(null:???)
com.intergral.fusionreactor.agent.filter.FusionReactorStaticFilter.doFilter(FusionReactorStaticFilter.java:53)
com.intergral.fusionreactor.agent.pointcuts.NewFilterChainPointCut$1.invoke(NewFilterChainPointCut.java:41)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:???)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:422)
org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:199)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
- locked <0x6791a199> (a org.apache.tomcat.util.net.SocketWrapper)
java.util.concurrent.ThreadPoolExecutor.runWorker(null:???)
java.util.concurrent.ThreadPoolExecutor$Worker.run(null:???)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(null:???)
Locked ownable synchronizers:
- java.util.concurrent.ThreadPoolExecutor$Worker@2bc8ea50