4

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
James A Mohler
  • 11,060
  • 15
  • 46
  • 72
TonyG
  • 101
  • 4
  • 2
    This is an expected behaviour. Check the "Document services" at http://www.adobe.com/products/coldfusion-family/buying-guide.html. – Anit Kumar Dec 30 '14 at 19:24
  • 1
    In case the link breaks, it says "Document services > PDF file generation" is a "Restricted" feature in "ColdFusion 11 Standard". *..Restricted features in ColdFusion Standard Edition: Enterprise features run through the Enterprise Feature Router (EFR). These features run in the Standard edition. However, all features running through the EFR are limited to one shared simultaneous request."* – Leigh Dec 30 '14 at 22:07

0 Answers0