Jump to content
Changes to the Jaspersoft community edition download ×

Charts fail to render under "heavy" loading


ee.ashley
Go to solution Solved by ee.ashley,

Recommended Posts

With JapserServer 4.5.0, I am experiencing an issue where if I pull a report with a chart multiple times simultaneously (to simulate multiple client requests or to simulate a dashboard with multiple chart reports), often times at least one or two of the charts will fail to render (shows a broken image link place holder in my browser) and the following exception appears in the log:

2013-07-18 15:57:05,966 ERROR errorPage_jsp,http-8080-6:259 - JSException: The JasperPrint object 11355625_1374184619754 cannot be found.2013-07-18 15:57:05,967 ERROR errorPage_jsp,http-8080-6:487 - stack trace of exception that redirected to errorPage.jspcom.jaspersoft.jasperserver.api.JSException: jsexception.jasperprint.not.found    at com.jaspersoft.jasperserver.war.control.ReportImageController.handleRequest(ReportImageController.java:99)    at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:399)    at com.jaspersoft.jasperserver.api.security.IPadSupportFilter.doFilter(IPadSupportFilter.java:67)    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411)    at com.jaspersoft.jasperserver.api.security.JSSwitchUserProcessingFilter.doFilterHttp(JSSwitchUserProcessingFilter.java:154)    at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411)    at org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)    at org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411)    at org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101)    at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411)    at org.springframework.security.providers.anonymous.AnonymousProcessingFilter.doFilterHttp(AnonymousProcessingFilter.java:105)    at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411)    at com.jaspersoft.jasperserver.api.metadata.user.service.impl.MetadataAuthenticationProcessingFilter.doFilter(MetadataAuthenticationProcessingFilter.java:139)    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411)    at com.jaspersoft.jasperserver.war.util.RequestParameterAuthenticationFilter.doFilter(RequestParameterAuthenticationFilter.java:97)    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411)    at org.springframework.security.ui.basicauth.BasicProcessingFilter.doFilterHttp(BasicProcessingFilter.java:174)    at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411)    at com.jaspersoft.jasperserver.war.UserPreferencesFilter.doFilter(UserPreferencesFilter.java:184)    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411)    at org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:278)    at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411)    at com.jaspersoft.jasperserver.war.UserPreferencesFilter.doFilter(UserPreferencesFilter.java:184)    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411)    at com.jaspersoft.jasperserver.api.logging.filter.BasicLoggingFilter.doFilter(BasicLoggingFilter.java:53)    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411)    at com.jaspersoft.jasperserver.api.security.JSCsrfGuardFilter.doFilter(JSCsrfGuardFilter.java:81)    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411)    at com.jaspersoft.jasperserver.api.security.WebAppSecurityFilter.doFilter(WebAppSecurityFilter.java:83)    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411)    at com.jaspersoft.jasperserver.war.MultipartRequestWrapperFilter.doFilter(MultipartRequestWrapperFilter.java:90)    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411)    at org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)    at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411)    at org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:188)    at org.springframework.security.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:99)    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)    at com.jaspersoft.jasperserver.war.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:67)    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)    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.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:558)    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:298)    at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)    at java.lang.Thread.run(Thread.java:619)[/code]

When I searched for this error online, it seemed that people were getting this error when using Google Chrome, but they apparently did not experience any other adverse effects for the reports. I tried this under both Chrome and IE8, and the result is the same.

We are experiencing this in a third-party product that has Jasperserver Pro 4.5.0 integrated into it, but I am am reproducing this in stock Jasperserver CP 4.5.0 as well (trying to isolate if its the third-party product or Jasperserver itself causing the issue). I am running this under a Windows Server 2008 R2 virtual machine.

I've attached the jrxml file for the report, which was created with iReport Designer.

Any ideas are greatly appreciated!

Link to comment
Share on other sites

  • Replies 1
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

  • Solution

I've traced through the Java code and found that there is a hashmap in the session that appears to store references to the images that need to be generated. This hashmap appears to have a max size of 10. If I increased this size in the debugger to a larger number (exceeding the number of charts I try to generate concurrently), then I could get all charts to render without issue. Otherwise, any more than 10 charts resulted in the exceptions being thrown.

I saw that this class has a setMaxSize method in the LRUSessionObjectAccessor.java file, but even when I set a breakpoint on this, it never seemed to be called. I also grepped through the Java source files themselves and could not find any calls to setMaxSize either.

Does anyone know where the limit of 10 gets set? And is there a way to increase this without necessitating a code change?

EDIT:

I found that the applicationContext.xml settings file has a maxSize property, which has a comment regarding dashboard image loading problems. I tested updating this setting to a larger number in the community edition and found that it addressed my chart loading issues. I am trying to get this change tested in our production JasperServer Pro installation to see if it helps as well.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...