Sorry, I could not reproduce this issue. Could you explain more the detail steps? I imported the sample cube and build successfully. And then disable cube, drop cube, and drop model. Next I unload the KYLIN_CAL_DT, and it works. Next I load the KYLIN_CAL_DT again, it works still.
2016-12-13 21:40 GMT+08:00 Billy Liu <[email protected]>: > 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(CubeDe >> sc.java:342) >> at org.apache.kylin.source.hive.SchemaChecker$1.apply(SchemaChe >> cker.java:110) >> at org.apache.kylin.source.hive.SchemaChecker$1.apply(SchemaChe >> cker.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(AbstractI >> terator.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(S >> chemaChecker.java:119) >> at org.apache.kylin.source.hive.SchemaChecker.allowReload(Schem >> aChecker.java:212) >> at org.apache.kylin.source.hive.HiveSourceTableLoader.reloadHiv >> eTables(HiveSourceTableLoader.java:66) >> at org.apache.kylin.rest.service.CubeService.reloadHiveTable(Cu >> beService.java:538) >> at org.apache.kylin.rest.service.CubeService$$FastClassBySpring >> CGLIB$$17a07c0e.invoke(<generated>) >> at org.springframework.cglib.proxy.MethodProxy.invoke(MethodPro >> xy.java:204) >> at org.springframework.aop.framework.CglibAopProxy$CglibMethodI >> nvocation.invokeJoinpoint(CglibAopProxy.java:700) >> at org.springframework.aop.framework.ReflectiveMethodInvocation >> .proceed(ReflectiveMethodInvocation.java:150) >> at org.springframework.security.access.intercept.aopalliance.Me >> thodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:64) >> at org.springframework.aop.framework.ReflectiveMethodInvocation >> .proceed(ReflectiveMethodInvocation.java:172) >> at org.springframework.aop.framework.CglibAopProxy$DynamicAdvis >> edInterceptor.intercept(CglibAopProxy.java:633) >> at org.apache.kylin.rest.service.CubeService$$EnhancerBySpringC >> GLIB$$6d92c2ca.reloadHiveTable(<generated>) >> at org.apache.kylin.rest.controller.TableController.loadHiveTab >> le(TableController.java:149) >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce >> ssorImpl.java:62) >> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe >> thodAccessorImpl.java:43) >> at java.lang.reflect.Method.invoke(Method.java:497) >> at org.springframework.web.method.support.InvocableHandlerMetho >> d.doInvoke(InvocableHandlerMethod.java:221) >> at org.springframework.web.method.support.InvocableHandlerMetho >> d.invokeForRequest(InvocableHandlerMethod.java:136) >> at org.springframework.web.servlet.mvc.method.annotation.Servle >> tInvocableHandlerMethod.invokeAndHandle(ServletInvocableHand >> lerMethod.java:104) >> at org.springframework.web.servlet.mvc.method.annotation.Reques >> tMappingHandlerAdapter.invokeHandleMethod(RequestMappingHand >> lerAdapter.java:743) >> at org.springframework.web.servlet.mvc.method.annotation.Reques >> tMappingHandlerAdapter.handleInternal(RequestMappingHandlerA >> dapter.java:672) >> at org.springframework.web.servlet.mvc.method.AbstractHandlerMe >> thodAdapter.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.processRequ >> est(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.internalDoFi >> lter(ApplicationFilterChain.java:303) >> at org.apache.catalina.core.ApplicationFilterChain.doFilter(App >> licationFilterChain.java:208) >> at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilte >> r.java:52) >> at org.apache.catalina.core.ApplicationFilterChain.internalDoFi >> lter(ApplicationFilterChain.java:241) >> at org.apache.catalina.core.ApplicationFilterChain.doFilter(App >> licationFilterChain.java:208) >> at org.springframework.security.web.FilterChainProxy$VirtualFil >> terChain.doFilter(FilterChainProxy.java:330) >> at org.springframework.security.web.access.intercept.FilterSecu >> rityInterceptor.invoke(FilterSecurityInterceptor.java:118) >> at org.springframework.security.web.access.intercept.FilterSecu >> rityInterceptor.doFilter(FilterSecurityInterceptor.java:84) >> at org.springframework.security.web.FilterChainProxy$VirtualFil >> terChain.doFilter(FilterChainProxy.java:342) >> at org.springframework.security.web.access.ExceptionTranslation >> Filter.doFilter(ExceptionTranslationFilter.java:113) >> at org.springframework.security.web.FilterChainProxy$VirtualFil >> terChain.doFilter(FilterChainProxy.java:342) >> at org.springframework.security.web.session.SessionManagementFi >> lter.doFilter(SessionManagementFilter.java:103) >> at org.springframework.security.web.FilterChainProxy$VirtualFil >> terChain.doFilter(FilterChainProxy.java:342) >> at org.springframework.security.web.authentication.AnonymousAut >> henticationFilter.doFilter(AnonymousAuthenticationFilter.java:113) >> at org.springframework.security.web.FilterChainProxy$VirtualFil >> terChain.doFilter(FilterChainProxy.java:342) >> at org.springframework.security.web.servletapi.SecurityContextH >> olderAwareRequestFilter.doFilter(SecurityContextHolder >> AwareRequestFilter.java:54) >> at org.springframework.security.web.FilterChainProxy$VirtualFil >> terChain.doFilter(FilterChainProxy.java:342) >> at org.springframework.security.web.savedrequest.RequestCacheAw >> areFilter.doFilter(RequestCacheAwareFilter.java:45) >> at org.springframework.security.web.FilterChainProxy$VirtualFil >> terChain.doFilter(FilterChainProxy.java:342) >> at org.springframework.security.web.authentication.www.BasicAut >> henticationFilter.doFilter(BasicAuthenticationFilter.java:150) >> at org.springframework.security.web.FilterChainProxy$VirtualFil >> terChain.doFilter(FilterChainProxy.java:342) >> at org.springframework.security.web.authentication.ui.DefaultLo >> ginPageGeneratingFilter.doFilter(DefaultLoginPageGener >> atingFilter.java:91) >> at org.springframework.security.web.FilterChainProxy$VirtualFil >> terChain.doFilter(FilterChainProxy.java:342) >> at org.springframework.security.web.authentication.AbstractAuth >> enticationProcessingFilter.doFilter(AbstractAuthenticatio >> nProcessingFilter.java:183) >> at org.springframework.security.web.FilterChainProxy$VirtualFil >> terChain.doFilter(FilterChainProxy.java:342) >> at org.springframework.security.web.authentication.logout.Logou >> tFilter.doFilter(LogoutFilter.java:105) >> at org.springframework.security.web.FilterChainProxy$VirtualFil >> terChain.doFilter(FilterChainProxy.java:342) >> at org.springframework.security.web.context.SecurityContextPers >> istenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) >> at org.springframework.security.web.FilterChainProxy$VirtualFil >> terChain.doFilter(FilterChainProxy.java:342) >> at org.springframework.security.web.FilterChainProxy.doFilterIn >> ternal(FilterChainProxy.java:192) >> at org.springframework.security.web.FilterChainProxy.doFilter(F >> ilterChainProxy.java:160) >> at org.springframework.web.filter.DelegatingFilterProxy.invokeD >> elegate(DelegatingFilterProxy.java:343) >> at org.springframework.web.filter.DelegatingFilterProxy.doFilte >> r(DelegatingFilterProxy.java:260) >> at org.apache.catalina.core.ApplicationFilterChain.internalDoFi >> lter(ApplicationFilterChain.java:241) >> at org.apache.catalina.core.ApplicationFilterChain.doFilter(App >> licationFilterChain.java:208) >> at com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilte >> r.java:209) >> at com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilte >> r.java:244) >> at org.apache.catalina.core.ApplicationFilterChain.internalDoFi >> lter(ApplicationFilterChain.java:241) >> at org.apache.catalina.core.ApplicationFilterChain.doFilter(App >> licationFilterChain.java:208) >> at org.apache.catalina.core.StandardWrapperValve.invoke(Standar >> dWrapperValve.java:220) >> at org.apache.catalina.core.StandardContextValve.invoke(Standar >> dContextValve.java:122) >> at org.apache.catalina.authenticator.AuthenticatorBase.invoke(A >> uthenticatorBase.java:505) >> at org.apache.catalina.core.StandardHostValve.invoke(StandardHo >> stValve.java:169) >> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorRepo >> rtValve.java:103) >> at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogVa >> lve.java:956) >> at org.apache.catalina.core.StandardEngineValve.invoke(Standard >> EngineValve.java:116) >> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAd >> apter.java:436) >> at org.apache.coyote.http11.AbstractHttp11Processor.process(Abs >> tractHttp11Processor.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(ThreadPool >> Executor.java:1142) >> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoo >> lExecutor.java:617) >> at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable. >> run(TaskThread.java:61) >> at java.lang.Thread.run(Thread.java:745) > > >
