SpagoBILabs / SpagoBI

Outdated version of Knowage - Business Intelligence suite. Explore https://github.com/KnowageLabs for the current repository.
180 stars 110 forks source link

SPAGOBI-1889 - Calculated filter : error when using several time the same field it the same calculated filter in xls #1372

Closed KnowageServiceAcc closed 4 years ago

KnowageServiceAcc commented 4 years ago

Details

Key Value
Key SPAGOBI-1889
Type Bug
Status Resolved
Priority Critical
Resolution Fixed
Affects 4.1, 4.2, 5.0.0
Fix
Components SERVER/AdHoc/Worksheet
Labels calculated_field, export, worksheet

People

Key Value
Assignee Alberto Ghedin
Reporter WEILL guillaume

Dates

Key Value
Created 2014-10-07T18:41:31.000+0200
Updated 2014-10-09T18:50:14.000+0200
Resolved 2014-10-09T15:41:29.000+0200

Description

If you create a ratio using culculated filter, like : field[reg1] / field[reg1] + field[reg2] + field[reg3] in a pivot table, an exception is raised when you try to export the table via xls exporter. (Actually, field[reg1] + field[reg1] failed too).

Logs :

The root cause of the error is: Index: 4, Size: 4 at it.eng.spagobi.utilities.engines.SpagoBIEngineServiceExceptionHandler.getWrappedException(SpagoBIEngineServiceExceptionHandler.java:77) at it.eng.spagobi.engines.worksheet.services.export.ExportWorksheetAction.service(ExportWorksheetAction.java:244) at it.eng.spago.dispatching.action.ActionCoordinator.invokeServiceBusiness(ActionCoordinator.java:209) at it.eng.spago.dispatching.action.ActionCoordinator.service(ActionCoordinator.java:158) at it.eng.spago.dispatching.httpchannel.AdapterHTTP.service(AdapterHTTP.java:496) 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 it.eng.spagobi.utilities.filters.AntiInjectionFilter.doFilter(AntiInjectionFilter.java:33) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at it.eng.spagobi.utilities.filters.SpagoBIAccessFilter.doFilter(SpagoBIAccessFilter.java:194) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at it.eng.spagobi.utilities.filters.EngineCheckSessionFilter.doFilter(EngineCheckSessionFilter.java:80) 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 com.googlecode.psiprobe.Tomcat60AgentValve.invoke(Tomcat60AgentValve.java:30) 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.coyote.http11.Http11Processor.process(Http11Processor.java:859) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:679) Caused by: java.lang.IndexOutOfBoundsException: Index: 4, Size: 4 at java.util.ArrayList.rangeCheck(ArrayList.java:571) at java.util.ArrayList.get(ArrayList.java:349) at it.eng.spagobi.engines.qbe.crosstable.CrossTab.executeOperationOnNumbers(CrossTab.java:1056) at it.eng.spagobi.engines.qbe.crosstable.CrossTab.executeOperationOnArrays(CrossTab.java:1003) at it.eng.spagobi.engines.qbe.crosstable.CrossTab.executeOperationOnTotalArraysAndUpdate(CrossTab.java:1009) at it.eng.spagobi.engines.qbe.crosstable.CrossTab.calculateCFSub(CrossTab.java:874) at it.eng.spagobi.engines.qbe.crosstable.CrossTab.calculateCF(CrossTab.java:809) at it.eng.spagobi.engines.qbe.crosstable.CrossTab.(CrossTab.java:131) at it.eng.spagobi.engines.worksheet.services.export.ExportWorksheetAction.getCrosstab(ExportWorksheetAction.java:915) at it.eng.spagobi.engines.worksheet.services.export.ExportWorksheetAction.fillSheetContent(ExportWorksheetAction.java:707) at it.eng.spagobi.engines.worksheet.services.export.ExportWorksheetAction.exportSheetToXLS(ExportWorksheetAction.java:585) at it.eng.spagobi.engines.worksheet.services.export.ExportWorksheetAction.exportToXLS(ExportWorksheetAction.java:317) at it.eng.spagobi.engines.worksheet.services.export.ExportWorksheetAction.service(ExportWorksheetAction.java:201) ... 26 more

Comments

Alberto Ghedin added a comment - 2014-10-09T15:41:22.739+0200

To apply the patch you should: 1) open the folder SpagoBIXXX\webapps\SpagoBIQbeEngine\WEB-INF\lib 2) make a backup copy of the file qbe.core-XXX.jar 3) open the file SpagoBIXXX\webapps\SpagoBIQbeEngine\WEB-INF\lib\qbe.core-XXX.jar with a zip editor 4) Copy the attached files into the folder it\eng\spagobi\engines\qbe\crosstable\ 5) Restart the server

WEILL guillaume added a comment - 2014-10-09T18:36:20.924+0200

Thanks for your help. In qbe.core-XXX.jar, there is no it\eng\spagobi\engines\qbe\crosstable\ folder, so I add it in classes folder directly. Nevertheless, bug still occurs with the same error. I am using 4.1 version, does it matter ?

WEILL guillaume added a comment - 2014-10-09T18:50:14.291+0200

Sorry, that works correctly. For information, you get an error on excel export only if you get NaN / Infinity in a calculated field (division by 0). In pdf, an empty cell is displayed and in html, Infinity is written.

Lofs for excel export :

09 oct. 2014 18:36:54,599 ERROR it.eng.spagobi.engines.qbe.services.core.ServiceExceptionAction.logError:96 - The error full stack trace is: it.eng.spagobi.utilities.engines.SpagoBIEngineServiceException: An unpredicted error occurred while executing EXPORT_WORKSHEETS_ACTION service. The root cause of the error is: Index: 2, Size: 2 at it.eng.spagobi.utilities.engines.SpagoBIEngineServiceExceptionHandler.getWrappedException(SpagoBIEngineServiceExceptionHandler.java:77) at it.eng.spagobi.engines.worksheet.services.export.ExportWorksheetAction.service(ExportWorksheetAction.java:244) at it.eng.spago.dispatching.action.ActionCoordinator.invokeServiceBusiness(ActionCoordinator.java:209) at it.eng.spago.dispatching.action.ActionCoordinator.service(ActionCoordinator.java:158) at it.eng.spago.dispatching.httpchannel.AdapterHTTP.service(AdapterHTTP.java:496) 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 it.eng.spagobi.utilities.filters.AntiInjectionFilter.doFilter(AntiInjectionFilter.java:33) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at it.eng.spagobi.utilities.filters.SpagoBIAccessFilter.doFilter(SpagoBIAccessFilter.java:194) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at it.eng.spagobi.utilities.filters.EngineCheckSessionFilter.doFilter(EngineCheckSessionFilter.java:80) 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 com.googlecode.psiprobe.Tomcat60AgentValve.invoke(Tomcat60AgentValve.java:30) 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.coyote.http11.Http11Processor.process(Http11Processor.java:859) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:679) Caused by: java.lang.IndexOutOfBoundsException: Index: 2, Size: 2 at java.util.ArrayList.rangeCheck(ArrayList.java:571) at java.util.ArrayList.get(ArrayList.java:349) at it.eng.spagobi.engines.qbe.crosstable.CrossTab.getArraysInvolvedInTheOperation(CrossTab.java:1005) at it.eng.spagobi.engines.qbe.crosstable.CrossTab.calculateCFSub(CrossTab.java:911) at it.eng.spagobi.engines.qbe.crosstable.CrossTab.calculateCF(CrossTab.java:845) at it.eng.spagobi.engines.qbe.crosstable.CrossTab.(CrossTab.java:140) at it.eng.spagobi.engines.worksheet.services.export.ExportWorksheetAction.getCrosstab(ExportWorksheetAction.java:915) at it.eng.spagobi.engines.worksheet.services.export.ExportWorksheetAction.fillSheetContent(ExportWorksheetAction.java:707) at it.eng.spagobi.engines.worksheet.services.export.ExportWorksheetAction.exportSheetToXLS(ExportWorksheetAction.java:585) at it.eng.spagobi.engines.worksheet.services.export.ExportWorksheetAction.exportToXLS(ExportWorksheetAction.java:317) at it.eng.spagobi.engines.worksheet.services.export.ExportWorksheetAction.service(ExportWorksheetAction.java:201) ... 26 more