#1 2014-02-19 10:03:06

tristan
Member
Registered: 2013-11-14

Intermittent error when previewing reports

This is a problem that started a few days ago, but I have no idea why. On occassion, in the report preview window, an error message is shown in the preview window.

Looking at the tomcat logs, I saw the following stacktrace:

java.lang.IllegalStateException: Report could not be loaded. It might be that ReportServer cannot access its temporary files (specified in rs.tempdir). If this error occurs repeatedly, please contact an administrator.
        at net.datenwerke.rs.core.server.reportexport.ReportExportServlet.exportReportViaSession(ReportExportServlet.java:272)
        at net.datenwerke.rs.core.server.reportexport.ReportExportServlet.doGet(ReportExportServlet.java:155)
        at net.datenwerke.rs.core.server.reportexport.ReportExportServlet$$EnhancerByGuice$$4bc33a49.CGLIB$doGet$0(<generated>)
        at net.datenwerke.rs.core.server.reportexport.ReportExportServlet$$EnhancerByGuice$$4bc33a49$$FastClassByGuice$$8199ea92.invoke(<generated>)
        at com.google.inject.internal.cglib.proxy.$MethodProxy.invokeSuper(MethodProxy.java:228)
        at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72)
        at com.google.inject.persist.jpa.JpaLocalTxnInterceptor.invoke(JpaLocalTxnInterceptor.java:66)
        at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72)
        at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:110)
        at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72)
        at com.google.inject.internal.InterceptorStackCallback.intercept(InterceptorStackCallback.java:52)
        at net.datenwerke.rs.core.server.reportexport.ReportExportServlet$$EnhancerByGuice$$4bc33a49.doGet(<generated>)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at net.datenwerke.rs.core.server.reportexport.ReportExportServlet$$EnhancerByGuice$$4bc33a49.CGLIB$service$14(<generated>)
        at net.datenwerke.rs.core.server.reportexport.ReportExportServlet$$EnhancerByGuice$$4bc33a49$$FastClassByGuice$$8199ea92.invoke(<generated>)
        at com.google.inject.internal.cglib.proxy.$MethodProxy.invokeSuper(MethodProxy.java:228)
        at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72)
        at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:110)
        at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72)
        at com.google.inject.internal.InterceptorStackCallback.intercept(InterceptorStackCallback.java:52)
        at net.datenwerke.rs.core.server.reportexport.ReportExportServlet$$EnhancerByGuice$$4bc33a49.service(<generated>)
        at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263)
        at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178)
        at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)
        at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62)
        at com.google.inject.persist.PersistFilter.doFilter(PersistFilter.java:89)
        at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
        at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
        at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118)
        at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
        at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:776)
        at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:705)
        at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:898)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
        at java.lang.Thread.run(Thread.java:724)

this comes with a corresponding entry in our access logs:

"GET /reportserver/reportserver/reportexport?nonce=0.5806268271986663&tid=15-12-1392793701350-32892745&isJsViewer=true HTTP/1.1" 500 4930 "http://xxx.xxxx.xxx/reportserver/resources/pdf.js/pdf.js" "Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko"


So I looked at the tempdir setting in the reportserver filesystem at /etc/main.cf and changed it from "tempdir" to "/tmp" and did a config reload.
I checked the /tmp directory and can see temp files now being created in /tmp.


But I am still getting a similar error:

10:56:01,939  WARN StatefulPersistenceContext:722 - HHH000179: Narrowing proxy to class net.datenwerke.rs.core.service.reportmanager.entities.ReportFolder - this operation breaks ==
Feb 19, 2014 10:56:06 AM net.datenwerke.rs.core.server.reportexport.ReportExportServlet doGet
WARNING: File '/tmp/rs-tmp-1392793384608-1276664942.tmp' does not exist
java.io.FileNotFoundException: File '/tmp/rs-tmp-1392793384608-1276664942.tmp' does not exist
        at org.apache.commons.io.FileUtils.openInputStream(FileUtils.java:256)
        at org.apache.commons.io.FileUtils.readFileToByteArray(FileUtils.java:1695)
        at net.datenwerke.rs.core.server.reportexport.ReportExportServlet.exportReportViaSession(ReportExportServlet.java:281)
        at net.datenwerke.rs.core.server.reportexport.ReportExportServlet.doGet(ReportExportServlet.java:155)
        at net.datenwerke.rs.core.server.reportexport.ReportExportServlet$$EnhancerByGuice$$834081b9.CGLIB$doGet$0(<generated>)
        at net.datenwerke.rs.core.server.reportexport.ReportExportServlet$$EnhancerByGuice$$834081b9$$FastClassByGuice$$1a7d48a8.invoke(<generated>)
        at com.google.inject.internal.cglib.proxy.$MethodProxy.invokeSuper(MethodProxy.java:228)
        at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72)
        at com.google.inject.persist.jpa.JpaLocalTxnInterceptor.invoke(JpaLocalTxnInterceptor.java:66)
        at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72)
        at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:110)
        at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72)
        at com.google.inject.internal.InterceptorStackCallback.intercept(InterceptorStackCallback.java:52)
        at net.datenwerke.rs.core.server.reportexport.ReportExportServlet$$EnhancerByGuice$$834081b9.doGet(<generated>)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at net.datenwerke.rs.core.server.reportexport.ReportExportServlet$$EnhancerByGuice$$834081b9.CGLIB$service$14(<generated>)
        at net.datenwerke.rs.core.server.reportexport.ReportExportServlet$$EnhancerByGuice$$834081b9$$FastClassByGuice$$1a7d48a8.invoke(<generated>)
        at com.google.inject.internal.cglib.proxy.$MethodProxy.invokeSuper(MethodProxy.java:228)
        at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72)
        at net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:110)
        at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72)
        at com.google.inject.internal.InterceptorStackCallback.intercept(InterceptorStackCallback.java:52)
        at net.datenwerke.rs.core.server.reportexport.ReportExportServlet$$EnhancerByGuice$$834081b9.service(<generated>)
        at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263)
        at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178)
        at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)
        at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62)
        at com.google.inject.persist.PersistFilter.doFilter(PersistFilter.java:89)
        at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
        at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
        at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118)
        at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
        at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:776)
        at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:705)
        at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:898)

The temp file reportserver is looking for doesn't exist in /tmp and I have no idea why/where it is getting it from. Is this an old preview that is being cached somewhere? Is there a way to clear it? I have tried re-starting tomcat, but that didn't help at all.

The random error messages look bad from an end-user point of view and the multiple error 500 messages are triggering our intrusion detection system.
Any thoughts on how to diagnose/fix this problem?

Offline

Board footer

Powered by FluxBB