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)

Reply via email to