OSBI / saiku

Saiku Analytics - The Worlds Greatest Open Source OLAP Browser
http://community.meteorite.bi
Apache License 2.0
1.3k stars 664 forks source link

NullPointerException with roles #266

Closed jagnaldo closed 7 years ago

jagnaldo commented 11 years ago

Hi Paul, i have a schema with role control, when i choice measure and dimension , occur 'nullpointerexception'. When i filter the dimension and choice one member, everything works fine. There´s no error on catalina.out. Any idea ? Thanks.

pstoellberger commented 11 years ago

do you have a stack trace for that?

jagnaldo commented 11 years ago

i´m using saiku 2.4 on pentaho bi server. The cube works on jpivot. Before 2.4 version, it works fine. What is the stack trace ? Thanks.

jagnaldo commented 11 years ago

Hi Paul, bellow is the catalina.out with more details.

Thanks.

10:38:48,597 ERROR [QueryResource] Cannot execute query (A54D9985-2B57-CDC2-B8D2-98A420D7C32F) org.saiku.service.util.exception.SaikuServiceException: Can't execute query: A54D9985-2B57-CDC2-B8D2-98A420D7C32F at org.saiku.service.olap.OlapQueryService.execute(OlapQueryService.java:224) at org.saiku.service.olap.OlapQueryService.execute(OlapQueryService.java:189) at org.saiku.web.rest.resources.QueryResource.execute(QueryResource.java:603) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185) at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339) at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) at org.codehaus.enunciate.modules.jersey.EnunciateJerseyServletContainer.service(EnunciateJerseyServletContainer.java:248) at org.saiku.plugin.EnunciateJerseyPluginServlet.service(EnunciateJerseyPluginServlet.java:91) at org.saiku.plugin.ServletAdapterContentGenerator.createContent(ServletAdapterContentGenerator.java:84) at org.pentaho.platform.web.servlet.GenericServlet.doGet(GenericServlet.java:261) 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.pentaho.platform.web.http.filters.PentahoWebContextFilter.doFilter(PentahoWebContextFilter.java:92) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.pentaho.platform.web.http.filters.PentahoRequestContextFilter.doFilter(PentahoRequestContextFilter.java:84) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378) 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:390) 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:390) at org.pentaho.platform.web.http.security.SecurityStartupFilter.doFilter(SecurityStartupFilter.java:103) at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) 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:390) at org.pentaho.platform.web.http.security.RequestParameterAuthenticationFilter.doFilter(RequestParameterAuthenticationFilter.java:169) at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) 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:390) 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:390) at org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89) at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) 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:390) at org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter.doFilterHttp(SecurityContextHolderAwareRequestFilter.java:91) at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) at org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:175) 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 org.pentaho.platform.web.http.filters.SystemStatusFilter.doFilter(SystemStatusFilter.java:60) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.pentaho.platform.web.http.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.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.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:470) 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.Http11Processor.process(Http11Processor.java:857) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:662) Caused by: org.olap4j.OlapException: mondrian gave exception while executing query at mondrian.olap4j.MondrianOlap4jConnection$Helper.createException(MondrianOlap4jConnection.java:762) at mondrian.olap4j.MondrianOlap4jStatement.executeOlapQueryInternal(MondrianOlap4jStatement.java:421) at mondrian.olap4j.MondrianOlap4jStatement.executeOlapQuery(MondrianOlap4jStatement.java:347) at org.saiku.olap.query.OlapQuery.execute(OlapQuery.java:201) at org.saiku.service.olap.OlapQueryService.execute(OlapQueryService.java:208) ... 84 more Caused by: mondrian.olap.MondrianException: Mondrian Error:Internal error: Error while executing query [select NON EMPTY {Hierarchize({[Measures].[Qtde Processos]})} ON COLUMNS, NON EMPTY {Hierarchize({[Seguradora].[Seguradora].Members})} ON ROWS from [Processos Judiciais] ] at mondrian.resource.MondrianResource$_Def0.ex(MondrianResource.java:967) at mondrian.olap.Util.newInternal(Util.java:2323) at mondrian.olap.Util.newError(Util.java:2339) at mondrian.rolap.RolapConnection.executeInternal(RolapConnection.java:715) at mondrian.rolap.RolapConnection.access$000(RolapConnection.java:51) at mondrian.rolap.RolapConnection$1.call(RolapConnection.java:631) at mondrian.rolap.RolapConnection$1.call(RolapConnection.java:630) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) ... 1 more Caused by: java.lang.NullPointerException at mondrian.rolap.SqlConstraintUtils.joinLevelTableToFactTable(SqlConstraintUtils.java:407) at mondrian.rolap.SqlConstraintUtils.addContextConstraint(SqlConstraintUtils.java:247) at mondrian.rolap.SqlContextConstraint.addConstraint(SqlContextConstraint.java:282) at mondrian.rolap.SqlTupleReader.generateSelectForLevels(SqlTupleReader.java:899) at mondrian.rolap.SqlTupleReader.makeLevelMembersSql(SqlTupleReader.java:815) at mondrian.rolap.SqlTupleReader.prepareTuples(SqlTupleReader.java:389) at mondrian.rolap.SqlTupleReader.readTuples(SqlTupleReader.java:544) at mondrian.rolap.SqlMemberSource.getMembersInLevel(SqlMemberSource.java:507) at mondrian.rolap.SmartMemberReader.getMembersInLevel(SmartMemberReader.java:146) at mondrian.rolap.RolapCubeHierarchy$CacheRolapCubeHierarchyMemberReader.getMembersInLevel(RolapCubeHierarchy.java:725) at mondrian.rolap.RestrictedMemberReader.getMembersInLevel(RestrictedMemberReader.java:241) at mondrian.rolap.DelegatingMemberReader.getMembersInLevel(DelegatingMemberReader.java:141) at mondrian.rolap.SubstitutingMemberReader.getMembersInLevel(SubstitutingMemberReader.java:185) at mondrian.rolap.RolapSchemaReader.getLevelMembers(RolapSchemaReader.java:548) at mondrian.olap.DelegatingSchemaReader.getLevelMembers(DelegatingSchemaReader.java:242) at mondrian.olap.fun.FunUtil.getNonEmptyLevelMembers(FunUtil.java:2199) at mondrian.olap.fun.FunUtil.levelMembers(FunUtil.java:2213) at mondrian.olap.fun.LevelMembersFunDef$1.evaluateList(LevelMembersFunDef.java:37) at mondrian.olap.fun.HierarchizeFunDef$1.evaluateList(HierarchizeFunDef.java:46) at mondrian.calc.impl.AbstractListCalc.evaluateIterable(AbstractListCalc.java:71) at mondrian.rolap.RolapResult.executeAxis(RolapResult.java:811) at mondrian.rolap.RolapResult.evalLoad(RolapResult.java:642) at mondrian.rolap.RolapResult.loadMembers(RolapResult.java:598) at mondrian.rolap.RolapResult.(RolapResult.java:286) at mondrian.rolap.RolapConnection.executeInternal(RolapConnection.java:680) ... 8 more Setting role to datasource:ProcessosJudiciais_Homolog role: Authenticated,Sulamerica,

pstoellberger commented 11 years ago

there seems to be an issue with the relation dimension to fact table

does it work without roles? can you make sure your schema is correct? can you execute that query in jpivot to test if this only occurs in saiku?

jagnaldo commented 11 years ago

Hi Paul,

it works without roles i execute in jpivot and works fine !

Bellow is the links with saiku and jpivot

Thanks.

http://i.imgur.com/AWey6.png http://i.imgur.com/AHvck.png

jagnaldo commented 11 years ago

Paul, i tested with saiku 2.3 and don´t have this problem.

jagnaldo commented 11 years ago

Paul,

the problem may be on accented character ? My role have this, look bellow.

http://i.imgur.com/tTnKz.png

http://i.imgur.com/CAyl2.png

pstoellberger commented 11 years ago

could be. can you remove the special characters and try again?

jagnaldo commented 11 years ago

I changed the name for HSBC and don´t work too, work on jpivot, see bellow.

Thanks.

http://i.imgur.com/q0X0a.png

http://i.imgur.com/ec6A6.png

jagnaldo commented 11 years ago

the problem is only when i put the measure and dimension first time, after, if i click on dimension filter, the filter display correctly the role condition, when i choice the member and save the filter, it works fine.

jagnaldo commented 11 years ago

Hi Paul, bellow is another strange situation on my role configuration (). T

  <CubeGrant cube="Processos Judiciais" access="all">
    <DimensionGrant dimension="Recebedor Pagamento" access="none">
    </DimensionGrant>
    <DimensionGrant dimension="Perito Custas" access="none">
    </DimensionGrant>

It works on jpivot, but not on saiku.

Thanks.

jagnaldo commented 11 years ago

Paul, i did one more test and the error only occur on virtual cube oh my schema. Thanks

jagnaldo commented 11 years ago

Hi Paul, i tested with steelwheels schema and i think the problem is related with the argument 'rollupPolicy="partial"'. I changed the content of column 'Territoty' of 'CUSTOMER_W_TER' to 'APÉC' and created a virtual cube and role on the steelweels schema. Bellow is the schema and the print screens with the error. Thanks,

http://i.imgur.com/NUFKq.png http://i.imgur.com/QGELC.png http://i.imgur.com/F8qyr.png http://i.imgur.com/IJTbN.png

jagnaldo commented 11 years ago

Paul, can you read the steelwells schema attached ? If not, how can i send you my schema ?

jagnaldo commented 11 years ago

Paul, did you read the steelwells schema ?

jagnaldo commented 11 years ago

Hi Paul, are you working on this issue ? do you have any doubts ? i'm still with this problem in my production environment. Sorry but i don't know if you are understanding the related situation

pstoellberger commented 11 years ago

I'm sorry but this seems to be a mondrian issue, I dont know how this could be related to saiku itself

you will have to run this against the latest mondrian version e.g. use the one from saiku and put it schema workbench. test the query there and see if it works.

unfortunately i dont have any bandwidth to really take a closer look at this issue right now as i have more urgent things to look at

jagnaldo commented 11 years ago

OK Paul, i will check it. Thanks.

jagnaldo commented 11 years ago

Paul i did another test and the problem is with the argument 'rollupPolicy="partial", if i define a role like bellow, the nullpointerexception occurs, if i take it, it works fine.

I am using pentaho 3.10 and saiku 2.4.

Thanks.

http://imgur.com/RB3Nk