Thanks Mars for the reporting. The NPE should be some kinds of bug. Will look into it.
2016-12-13 11:33 GMT+08:00 Mars Xu <[email protected]>: > Hello all, > > After I test the feature of more robust approach for hive schema > change in version 1.6. I have some tests as follow: > > 1. Load a fact table and a lookup table correctly ,and build a model > and cube depend on these two tables correctly, but it can’t be > loaded/unload this two tables again even though I do nothing change to > their schema,just load or unload. > 2. Load a fact table and a lookup table correctly ,and build a model > and cube depend on these two tables correctly, but it can’t be > loaded/unload this two tables again after I rename a fact table column. > > under these two circumstances, there will print the same log in kylin.log > as follow, Is this also a bug or what the exact meaning of more robust > approach for hive schema change ? > > java.lang.NullPointerException > at org.apache.kylin.cube.model.CubeDesc.getFactTableDesc( > CubeDesc.java:342) > at org.apache.kylin.source.hive.SchemaChecker$1.apply( > SchemaChecker.java:110) > at org.apache.kylin.source.hive.SchemaChecker$1.apply( > SchemaChecker.java:101) > at com.google.common.collect.Iterators$7.computeNext( > Iterators.java:702) > at com.google.common.collect.AbstractIterator.tryToComputeNext( > AbstractIterator.java:143) > at com.google.common.collect.AbstractIterator.hasNext( > AbstractIterator.java:138) > at com.google.common.collect.ImmutableList.copyOf( > ImmutableList.java:267) > at com.google.common.collect.ImmutableList.copyOf( > ImmutableList.java:223) > at org.apache.kylin.source.hive.SchemaChecker.findCubeByTable( > SchemaChecker.java:119) > at org.apache.kylin.source.hive.SchemaChecker.allowReload( > SchemaChecker.java:212) > at org.apache.kylin.source.hive.HiveSourceTableLoader. > reloadHiveTables(HiveSourceTableLoader.java:66) > at org.apache.kylin.rest.service.CubeService.reloadHiveTable( > CubeService.java:538) > at org.apache.kylin.rest.service.CubeService$$ > FastClassBySpringCGLIB$$17a07c0e.invoke(<generated>) > at org.springframework.cglib.proxy.MethodProxy.invoke( > MethodProxy.java:204) > at org.springframework.aop.framework.CglibAopProxy$ > CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:700) > at org.springframework.aop.framework.ReflectiveMethodInvocation. > proceed(ReflectiveMethodInvocation.java:150) > at org.springframework.security.access.intercept.aopalliance. > MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:64) > at org.springframework.aop.framework.ReflectiveMethodInvocation. > proceed(ReflectiveMethodInvocation.java:172) > at org.springframework.aop.framework.CglibAopProxy$ > DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:633) > at org.apache.kylin.rest.service.CubeService$$ > EnhancerBySpringCGLIB$$6d92c2ca.reloadHiveTable(<generated>) > at org.apache.kylin.rest.controller.TableController. > loadHiveTable(TableController.java:149) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at sun.reflect.NativeMethodAccessorImpl.invoke( > NativeMethodAccessorImpl.java:62) > at sun.reflect.DelegatingMethodAccessorImpl.invoke( > DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:497) > at org.springframework.web.method.support.InvocableHandlerMethod. > doInvoke(InvocableHandlerMethod.java:221) > at org.springframework.web.method.support.InvocableHandlerMethod. > invokeForRequest(InvocableHandlerMethod.java:136) > at org.springframework.web.servlet.mvc.method.annotation. > ServletInvocableHandlerMethod.invokeAndHandle( > ServletInvocableHandlerMethod.java:104) > at org.springframework.web.servlet.mvc.method.annotation. > RequestMappingHandlerAdapter.invokeHandleMethod( > RequestMappingHandlerAdapter.java:743) > at org.springframework.web.servlet.mvc.method.annotation. > RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter. > java:672) > at org.springframework.web.servlet.mvc.method. > AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:82) > at org.springframework.web.servlet.DispatcherServlet. > doDispatch(DispatcherServlet.java:933) > at org.springframework.web.servlet.DispatcherServlet. > doService(DispatcherServlet.java:867) > at org.springframework.web.servlet.FrameworkServlet. > processRequest(FrameworkServlet.java:951) > at org.springframework.web.servlet.FrameworkServlet. > doPost(FrameworkServlet.java:853) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) > at org.springframework.web.servlet.FrameworkServlet. > service(FrameworkServlet.java:827) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:303) > at org.apache.catalina.core.ApplicationFilterChain.doFilter( > ApplicationFilterChain.java:208) > at org.apache.tomcat.websocket.server.WsFilter.doFilter( > WsFilter.java:52) > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:241) > at org.apache.catalina.core.ApplicationFilterChain.doFilter( > ApplicationFilterChain.java:208) > at org.springframework.security.web.FilterChainProxy$ > VirtualFilterChain.doFilter(FilterChainProxy.java:330) > at org.springframework.security.web.access.intercept. > FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118) > at org.springframework.security.web.access.intercept. > FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84) > at org.springframework.security.web.FilterChainProxy$ > VirtualFilterChain.doFilter(FilterChainProxy.java:342) > at org.springframework.security.web.access. > ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) > at org.springframework.security.web.FilterChainProxy$ > VirtualFilterChain.doFilter(FilterChainProxy.java:342) > at org.springframework.security.web.session. > SessionManagementFilter.doFilter(SessionManagementFilter.java:103) > at org.springframework.security.web.FilterChainProxy$ > VirtualFilterChain.doFilter(FilterChainProxy.java:342) > at org.springframework.security.web.authentication. > AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter. > java:113) > at org.springframework.security.web.FilterChainProxy$ > VirtualFilterChain.doFilter(FilterChainProxy.java:342) > at org.springframework.security.web.servletapi. > SecurityContextHolderAwareRequestFilter.doFilter( > SecurityContextHolderAwareRequestFilter.java:54) > at org.springframework.security.web.FilterChainProxy$ > VirtualFilterChain.doFilter(FilterChainProxy.java:342) > at org.springframework.security.web.savedrequest. > RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45) > at org.springframework.security.web.FilterChainProxy$ > VirtualFilterChain.doFilter(FilterChainProxy.java:342) > at org.springframework.security.web.authentication.www. > BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150) > at org.springframework.security.web.FilterChainProxy$ > VirtualFilterChain.doFilter(FilterChainProxy.java:342) > at org.springframework.security.web.authentication.ui. > DefaultLoginPageGeneratingFilter.doFilter(DefaultLoginPageGeneratingFilt > er.java:91) > at org.springframework.security.web.FilterChainProxy$ > VirtualFilterChain.doFilter(FilterChainProxy.java:342) > at org.springframework.security.web.authentication. > AbstractAuthenticationProcessingFilter.doFilter( > AbstractAuthenticationProcessingFilter.java:183) > at org.springframework.security.web.FilterChainProxy$ > VirtualFilterChain.doFilter(FilterChainProxy.java:342) > at org.springframework.security.web.authentication.logout. > LogoutFilter.doFilter(LogoutFilter.java:105) > at org.springframework.security.web.FilterChainProxy$ > VirtualFilterChain.doFilter(FilterChainProxy.java:342) > at org.springframework.security.web.context. > SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilt > er.java:87) > at org.springframework.security.web.FilterChainProxy$ > VirtualFilterChain.doFilter(FilterChainProxy.java:342) > at org.springframework.security.web.FilterChainProxy. > doFilterInternal(FilterChainProxy.java:192) > at org.springframework.security.web.FilterChainProxy.doFilter( > FilterChainProxy.java:160) > at org.springframework.web.filter.DelegatingFilterProxy. > invokeDelegate(DelegatingFilterProxy.java:343) > at org.springframework.web.filter.DelegatingFilterProxy.doFilter( > DelegatingFilterProxy.java:260) > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:241) > at org.apache.catalina.core.ApplicationFilterChain.doFilter( > ApplicationFilterChain.java:208) > at com.thetransactioncompany.cors.CORSFilter.doFilter( > CORSFilter.java:209) > at com.thetransactioncompany.cors.CORSFilter.doFilter( > CORSFilter.java:244) > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:241) > at org.apache.catalina.core.ApplicationFilterChain.doFilter( > ApplicationFilterChain.java:208) > at org.apache.catalina.core.StandardWrapperValve.invoke( > StandardWrapperValve.java:220) > at org.apache.catalina.core.StandardContextValve.invoke( > StandardContextValve.java:122) > at org.apache.catalina.authenticator.AuthenticatorBase.invoke( > AuthenticatorBase.java:505) > at org.apache.catalina.core.StandardHostValve.invoke( > StandardHostValve.java:169) > at org.apache.catalina.valves.ErrorReportValve.invoke( > ErrorReportValve.java:103) > at org.apache.catalina.valves.AccessLogValve.invoke( > AccessLogValve.java:956) > at org.apache.catalina.core.StandardEngineValve.invoke( > StandardEngineValve.java:116) > at org.apache.catalina.connector.CoyoteAdapter.service( > CoyoteAdapter.java:436) > at org.apache.coyote.http11.AbstractHttp11Processor.process( > AbstractHttp11Processor.java:1078) > at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler. > process(AbstractProtocol.java:625) > at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor. > run(JIoEndpoint.java:316) > at java.util.concurrent.ThreadPoolExecutor.runWorker( > ThreadPoolExecutor.java:1142) > at java.util.concurrent.ThreadPoolExecutor$Worker.run( > ThreadPoolExecutor.java:617) > at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run( > TaskThread.java:61) > at java.lang.Thread.run(Thread.java:745)
