Support Article
StaticContentResolver IllegalMonitorStateException
SA-30098
Summary
System administrators have noted a frequently occurring exception in the log, with no user impact.
Error Messages
2016-09-18 16:54:27,284 [ WebContainer : 1] [ ] [ ] (tent.StaticContentResolverImpl) ERROR - Caught unhandled error in StaticContentResolver handling request aInput = {}
java.lang.IllegalMonitorStateException
at com.pega.jsr166backport.java.util.concurrent.locks.ReentrantReadWriteLock$Sync.tryReleaseShared(ReentrantReadWriteLock.java:323)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.releaseShared(AbstractQueuedSynchronizer.java:1352)
at com.pega.jsr166backport.java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.unlock(ReentrantReadWriteLock.java:709)
at com.pega.pegarules.priv.FileLockManager$PRFileLock.readUnlock(FileLockManager.java:267)
at com.pega.pegarules.priv.FileLockManager.readUnlock(FileLockManager.java:86)
at com.pega.pegarules.exec.internal.basic.staticcontent.StaticContentResolverImpl.processRequest(StaticContentResolverImpl.java:617)
at com.pega.pegarules.exec.internal.basic.staticcontent.StaticContentResolverImpl.processRequest(StaticContentResolverImpl.java:497)
at com.pega.pegarules.exec.internal.basic.staticcontent.StaticContentResolverImpl.processRequest(StaticContentResolverImpl.java:493)
at com.pega.pegarules.session.internal.engineinterface.etier.impl.EngineImpl._getStaticContent_privact(EngineImpl.java:236)
at com.pega.pegarules.session.internal.engineinterface.etier.impl.EngineImpl.getStaticContent(EngineImpl.java:205)
at com.pega.pegarules.session.internal.engineinterface.etier.ejb.EngineBean.getStaticContent(EngineBean.java:180)
at sun.reflect.GeneratedMethodAccessor135.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56)
at java.lang.reflect.Method.invoke(Method.java:620)
at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethod(PRBootstrap.java:338)
at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethodPropagatingThrowable(PRBootstrap.java:379)
at com.pega.pegarules.boot.internal.extbridge.AppServerBridgeToPega.invokeMethodPropagatingThrowable(AppServerBridgeToPega.java:216)
at com.pega.pegarules.boot.internal.extbridge.AppServerBridgeToPega.invokeMethodPropagatingException(AppServerBridgeToPega.java:238)
at com.pega.pegarules.internal.etier.ejb.EngineBeanBoot.getStaticContent(EngineBeanBoot.java:154)
at com.pega.pegarules.internal.etier.interfaces.EJSLocalStatelessEngineBMT_f2439d86.getStaticContent(Unknown Source)
at com.pega.pegarules.web.impl.WebStandardImpl.sendOutput(WebStandardImpl.java:1116)
at com.pega.pegarules.web.impl.WebStandardImpl.doPost(WebStandardImpl.java:315)
at sun.reflect.GeneratedMethodAccessor110.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56)
at java.lang.reflect.Method.invoke(Method.java:620)
at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethod(PRBootstrap.java:338)
at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethodPropagatingThrowable(PRBootstrap.java:379)
at com.pega.pegarules.boot.internal.extbridge.AppServerBridgeToPega.invokeMethodPropagatingThrowable(AppServerBridgeToPega.java:216)
at com.pega.pegarules.boot.internal.extbridge.AppServerBridgeToPega.invokeMethod(AppServerBridgeToPega.java:265)
at com.pega.pegarules.internal.web.servlet.WebStandardBoot.doPost(WebStandardBoot.java:118)
at com.pega.pegarules.internal.web.servlet.WebStandardBoot.doGet(WebStandardBoot.java:89)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:575)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1230)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:779)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1071)
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:914)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:459)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:526)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:312)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:88)
at com.ibm.ws.ssl.channel.impl.SSLReadServiceContext$SSLReadCompletedCallback.complete(SSLReadServiceContext.java:1818)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1864)
Steps to Reproduce
Not applicable
Root Cause
An issue in the custom application code or rules.
Application uses a custom built attachment display feature that pulls attachments from an archive and streams them to the browser using Pega Engine API call to tools.sendFile() method.
Resolution
Perform the following local-change:
Adjust sendFile() call to send "false" as the parameter that controls whether the file should be deleted from the StaticContent directory.
Since the file content is getting streamed from memory (coming from the external storage app), there is no content in ServiceExport to delete - and this was causing the exception shown above.
Published November 18, 2016 - Updated October 8, 2020
Have a question? Get answers now.
Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.