[ 
https://issues.apache.org/jira/browse/KYLIN-5092?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17418388#comment-17418388
 ] 

mukvin commented on KYLIN-5092:
-------------------------------

[~andrewwlane] this ticket you can keep and I will add a validate for request 
body in build cube and other request body. It's a good chance to notice that 
the validate for request is not robust. you can also join community to 
solve.;););)

> Unable to use API to refresh a cube - "Name is null" error
> ----------------------------------------------------------
>
>                 Key: KYLIN-5092
>                 URL: https://issues.apache.org/jira/browse/KYLIN-5092
>             Project: Kylin
>          Issue Type: Bug
>          Components: REST Service
>    Affects Versions: v3.0.1, v4.0.0
>            Reporter: Andrew Lane
>            Priority: Major
>         Attachments: image-2021-09-22-10-19-11-310.png, 
> image-2021-09-22-10-21-55-855.png
>
>
> I was able to reproduce this both in a live installation (Version: Apache 
> kylin 3.0.1, Commit: 638a1eb68f257366d240105b33e5eea3bfa4dbf3) as well as by 
> running the apachekylin/apache-kylin-standalone:4.0.0 docker container 
> (Version: Apache kylin 4.0.0, Commit: 
> aa6d582c0a96fdf31e85791f86850cfc00a7644f).
> *Steps to Reproduce*
> 1) Pull image
> {code:java}
> docker pull apachekylin/apache-kylin-standalone:4.0.0{code}
> 2) Run apache-kylin-standalone
> {code:java}
> docker run -d -m 8G -p 7070:7070 -p 8088:8088 -p 8032:8032 -p 8042:8042 -p 
> 2181:2181 apachekylin/apache-kylin-standalone:4.0.0{code}
> 3) Authenticate
> {code:java}
> curl --location --request POST 
> 'http://127.0.0.1:7070/kylin/api/user/authentication' \
> --header 'Content-Type: application/json' \
> --header 'Authorization: Basic QURNSU46S1lMSU4=' \
> -c cookiefile.txt{code}
> 3a) Expected response:
> {code:java}
> {"userDetails":{"username":"ADMIN","password":"$2a$10$o3ktIWsGYxXNuUWQiYlZXOW5hWcqyNAFQsSSCSEWoC/BRVMAUjL32","authorities":[{"authority":"ROLE_ADMIN"},{"authority":"ROLE_ANALYST"},{"authority":"ROLE_MODELER"},{"authority":"ALL_USERS"}],"disabled":false,"defaultPassword":false,"locked":false,"lockedTime":0,"wrongTime":0,"uuid":"d40b9088-f450-0966-cccb-a3c5ccf6a46e","last_modified":1632157513006,"version":"4.0.0.0"}}
> {code}
> 4) Show API can pull cube info successfully
> {code:java}
> curl --location --request GET 
> 'http://127.0.0.1:7070/kylin/api/cubes/kylin_sales_cube' \
> --header 'Content-Type: application/json' \
> -b cookiefile.txt{code}
> 4a) Expected response:
> {code:java}
> {"uuid":"2fbca32a-a33e-4b69-83dd-0bb8b1f8c53b","last_modified":1632157411000,"version":"4.0.0.0","name":"kylin_sales_cube","owner":"ADMIN","descriptor":"kylin_sales_cube","display_name":"kylin_sales_cube","cost":50,"status":"DISABLED","segments":[],"create_time_utc":0,"cuboid_bytes":null,"cuboid_bytes_recommend":null,"cuboid_last_optimized":0,"snapshots":{}}
> {code}
> 5) Try to refresh kylin_sales_cube
> {code:java}
> curl --location --request PUT 
> 'http://127.0.0.1:7070/kylin/api/cubes/kylin_sales_cube/build' \
> --header 'Content-Type: application/json' \
> --data-raw '{  
>    "startTime": "1546300800000",
>    "endTime": "1609459200000",
>    "buildType ": "REFRESH"
> }' \
> -b cookiefile.txt{code}
> Error response:
> {code:java}
> {
>   "code": "999",
>   "data": null,
>   "msg": "Name is null",
>   "stacktrace": "org.apache.kylin.rest.exception.InternalErrorException: Name 
> is null\n\tat 
> org.apache.kylin.rest.controller.CubeController.buildInternal(CubeController.java:420)\n\tat
>  
> org.apache.kylin.rest.controller.CubeController.rebuild(CubeController.java:386)\n\tat
>  
> org.apache.kylin.rest.controller.CubeController.build(CubeController.java:375)\n\tat
>  sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat
>  
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat
>  java.lang.reflect.Method.invoke(Method.java:498)\n\tat 
> org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)\n\tat
>  
> org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)\n\tat
>  
> org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)\n\tat
>  
> org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:854)\n\tat
>  
> org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:765)\n\tat
>  
> org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)\n\tat
>  
> org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)\n\tat
>  
> org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)\n\tat
>  
> org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)\n\tat
>  
> org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:883)\n\tat
>  javax.servlet.http.HttpServlet.service(HttpServlet.java:650)\n\tat 
> org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)\n\tat
>  javax.servlet.http.HttpServlet.service(HttpServlet.java:728)\n\tat 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)\n\tat
>  
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)\n\tat
>  org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)\n\tat 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)\n\tat
>  
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)\n\tat
>  
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317)\n\tat
>  
> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)\n\tat
>  
> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)\n\tat
>  
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat
>  
> org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)\n\tat
>  
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat
>  
> org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)\n\tat
>  
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat
>  
> org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)\n\tat
>  
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat
>  
> org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)\n\tat
>  
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat
>  
> org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n\tat
>  
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat
>  
> org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:158)\n\tat
>  
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat
>  
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat
>  
> org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)\n\tat
>  
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat
>  
> org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)\n\tat
>  
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat
>  
> org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64)\n\tat
>  
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat
>  
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat
>  
> org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)\n\tat
>  
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\n\tat
>  
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat
>  
> org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)\n\tat
>  
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)\n\tat
>  
> org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)\n\tat
>  
> org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)\n\tat
>  
> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)\n\tat
>  
> org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)\n\tat
>  
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)\n\tat
>  
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)\n\tat
>  
> com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:209)\n\tat 
> com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:244)\n\tat 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)\n\tat
>  
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)\n\tat
>  
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)\n\tat
>  
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)\n\tat
>  
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492)\n\tat
>  
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:165)\n\tat
>  
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)\n\tat
>  
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025)\n\tat
>  
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)\n\tat
>  
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:452)\n\tat
>  
> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1195)\n\tat
>  
> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:654)\n\tat
>  
> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:317)\n\tat
>  
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat
>  java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolEx100  8693    
> 0  8597  100    96   328k   3753 --:--:-- --:--:-- --:--:--  
> 339kjava:748)\nCaused by: java.lang.NullPointerException: Name is null\n\tat 
> java.lang.Enum.valueOf(Enum.java:236)\n\tat 
> org.apache.kylin.cube.model.CubeBuildTypeEnum.valueOf(CubeBuildTypeEnum.java:25)\n\tat
>  
> org.apache.kylin.rest.controller.CubeController.buildInternal(CubeController.java:417)\n\t...
>  78 more\n",
>   "exception": "Name is null",
>   "url": "http://127.0.0.1:7070/kylin/api/cubes/kylin_sales_cube/build";
> }
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to