One CA PPM Jaspersoft Report keeps on loading in Development - works fine in Production
book
Article ID: 104188
calendar_today
Updated On:
Products
Clarity PPM SaaSClarity PPM On Premise
Issue/Introduction
Why does this Report not run quickly in Development, when it does in Production CA PPM?
One custom CA PPM Jaspersoft "Advanced Report" does not run to completion in Development. Stays at "Cancel Loading Job . . .". Even if left for two hours, it does not complete. There is no timeout message at 15 minutes or after.
On Production, this same report runs in less than one minute.
The Report was manually recreated from Production to Development. It was not moved over as part of a data migration or upgrade.
The Report has many sub-sections. The output is not big, but the report design is.
Examining the time that the Report queries take to run in the database, shows that it completes quickly at that level, in less than three minutes.
The Filters take less than a minute to load. It is only after using "Apply" that the delay occurs.
Environment
CA PPM 14.4 SaaS - Advanced Reporting (Jaspersoft).
Resolution
As it was already confirmed that the database level was processing the query quickly, a layer about this was reviewed next.
The "jasperserver.log" file contains information about how the report has run. For a SAAS customer, this may be obtained from CA Support.
As an example, this error was found at the time the report was run, and this enabled troubleshooting to root cause:
2018-07-04 16:19:55,536 ERROR AsyncJasperPrintAccessor,pool-6-thread-21335:321 [cppm99999_dev|MY_CA_PPM_SERVER] - Error during report execution net.sf.jasperreports.engine.JRRuntimeException: net.sf.jasperreports.engine.JRException: Error opening input stream from URL: repo:/ca_ppm/resources/images/circleGreen. at net.sf.jasperreports.repo.DefaultRepositoryService.getInputStream(DefaultRepositoryService.java:116) at net.sf.jasperreports.repo.InputStreamPersistenceService.load(InputStreamPersistenceService.java:45) at net.sf.jasperreports.repo.DefaultRepositoryService.getResource(DefaultRepositoryService.java:149) at net.sf.jasperreports.repo.RepositoryUtil.findInputStream(RepositoryUtil.java:190) at net.sf.jasperreports.repo.RepositoryUtil.getBytesFromLocation(RepositoryUtil.java:206) at net.sf.jasperreports.renderers.util.RendererUtil.getNonLazyRenderable(RendererUtil.java:163) at net.sf.jasperreports.engine.fill.JRFillImage.evaluateImage(JRFillImage.java:538) at net.sf.jasperreports.engine.fill.JRFillImage.evaluate(JRFillImage.java:482) at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:381) at net.sf.jasperreports.engine.fill.JRFillFrame.evaluate(JRFillFrame.java:159) at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:381) at net.sf.jasperreports.engine.fill.JRFillFrame.evaluate(JRFillFrame.java:159) at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:381) at net.sf.jasperreports.engine.fill.JRFillFrame.evaluate(JRFillFrame.java:159) at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:381) at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:500) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2028) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:749) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:256) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:115) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:586) at net.sf.jasperreports.engine.fill.BaseReportFiller.fill(BaseReportFiller.java:398) at net.sf.jasperreports.engine.fill.JRFillSubreport.fillSubreport(JRFillSubreport.java:732) at net.sf.jasperreports.engine.fill.JRSubreportRunnable.run(JRSubreportRunnable.java:59) at net.sf.jasperreports.engine.fill.AbstractThreadSubreportRunner.run(AbstractThreadSubreportRunner.java:221) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: net.sf.jasperreports.engine.JRException: Error opening input stream from URL: repo:/ca_ppm/resources/images/circleGreen. at net.sf.jasperreports.engine.util.JRLoader.getInputStream(JRLoader.java:343) at net.sf.jasperreports.repo.DefaultRepositoryService.getInputStream(DefaultRepositoryService.java:99) ... 27 more Caused by: java.io.IOException: Repository file resource /ca_ppm/resources/images/circleGreen could not be loaded at com.jaspersoft.jasperserver.api.engine.jasperreports.util.repo.RepositoryConnection.getInputStream(RepositoryConnection.java:103) at java.net.URL.openStream(URL.java:1045) at net.sf.jasperreports.engine.util.JRLoader.getInputStream(JRLoader.java:339) ... 28 more
The manual recreation from Production to Development may not have accounted for everything. The design of this report was examined (See also Jaspersoft Studio if needed) around this area.
Additional Information
CA PPM On-Premise customers have direct access to their own jasperserver.log for troubleshooting.
CA PPM On-Demand (SaaS) customers may obtain this log by running the Report to a Schedule, where there is an option to output the "stack trace." This will then provide you with the same level of troubleshooting.