After updaten my JasperServer 4.5 to 5.6 I encountered a few issues with the OLAP analysis. I can open the analysis just fine, but if I try to expand a dimension in the CUBE settings I get the following exception:
java.util.EmptyStackException at mondrian.util.ArrayStack.peek(ArrayStack.java:67) at mondrian.server.Locus.peek(Locus.java:61) at mondrian.rolap.SqlMemberSource.getMemberChildren2(SqlMemberSource.java:949) at mondrian.rolap.SqlMemberSource.getMemberChildren(SqlMemberSource.java:876) at mondrian.rolap.SqlMemberSource.getMemberChildren(SqlMemberSource.java:849) at mondrian.rolap.SmartMemberReader.readMemberChildren(SmartMemberReader.java:248) at mondrian.rolap.SmartMemberReader.getMemberChildren(SmartMemberReader.java:210) at mondrian.rolap.RolapCubeHierarchy$CacheRolapCubeHierarchyMemberReader.readMemberChildren(RolapCubeHierarchy.java:599) at mondrian.rolap.RolapCubeHierarchy$CacheRolapCubeHierarchyMemberReader.getMemberChildren(RolapCubeHierarchy.java:695) at mondrian.rolap.SmartMemberReader.getMemberChildren(SmartMemberReader.java:176) at mondrian.rolap.RolapSchemaReader.internalGetMemberChildren(RolapSchemaReader.java:186) at mondrian.rolap.RolapSchemaReader.getMemberChildren(RolapSchemaReader.java:168) at mondrian.rolap.RolapSchemaReader.getMemberChildren(RolapSchemaReader.java:162) at mondrian.olap.DelegatingSchemaReader.getMemberChildren(DelegatingSchemaReader.java:78) at com.tonbeller.jpivot.mondrian.MondrianMemberTree.internalGetChildren(MondrianMemberTree.java:252) at com.tonbeller.jpivot.mondrian.MondrianMemberTree.getChildren(MondrianMemberTree.java:235) at com.tonbeller.jpivot.navigator.member.TreeModelAdapter.getChildren(TreeModelAdapter.java:106) ...
I googled the error and found similar problems with Pentaho BI (they use the same OLAP engine an jpivot; they are also the creators of the Mondrian OLAP engine). It seems to be fixed in their system.
Has anybody encountered similar problems in Jasper BI and could provide a solution for this?
1 Answer:
In the Mondrian JavaDoc (http://mondrian.pentaho.com/api/mondrian/olap/SchemaReader.html) I found the following:
If you use a SchemaReader from outside of a mondrian statement, you may get a EmptyStackException indicating that mondrian cannot deduce the current locus (statement context). If you get that error, call withLocus() to create a SchemaReader that automatically provides a locus whenever a call is made.
Could this be the reason for the error? How can I fix this? I couldn't find the source code for the custom Jaspersoft mondrian or jpivor implementations in the subversion repo.
see http://community.jaspersoft.com/jasperreports-server/issues/3694 for a possible work-around
I also updated from 4.5 to 5.6 and I experience the exact same error.
Have you found a solution for this issue?
Best regards,
Michael