mchades opened a new issue, #7190:
URL: https://github.com/apache/gravitino/issues/7190

   ### Version
   
   main branch
   
   ### Describe what's wrong
   
   when creating a fileset with an empty string in `storageLocation` (location 
in catalog and schema not set), an NPE exception will be thrown
   
   ### Error message and/or stacktrace
   
   > Failed to operate object [test_fileset] operation [CREATE] under 
[test_schema], reason []
   > java.lang.NullPointerException
   >    at 
org.apache.gravitino.catalog.hadoop.HadoopCatalogOperations.caculateFilesetPath(HadoopCatalogOperations.java:1188)
   >    at 
org.apache.gravitino.catalog.hadoop.HadoopCatalogOperations.lambda$calculateFilesetPaths$24(HadoopCatalogOperations.java:1147)
   >    at java.lang.Iterable.forEach(Iterable.java:75)
   >    at 
org.apache.gravitino.catalog.hadoop.HadoopCatalogOperations.calculateFilesetPaths(HadoopCatalogOperations.java:1141)
   >    at 
org.apache.gravitino.catalog.hadoop.HadoopCatalogOperations.createMultipleLocationFileset(HadoopCatalogOperations.java:310)
   >    at 
org.apache.gravitino.catalog.hadoop.SecureHadoopCatalogOperations.lambda$createMultipleLocationFileset$0(SecureHadoopCatalogOperations.java:128)
   >    at java.security.AccessController.doPrivileged(Native Method)
   >    at javax.security.auth.Subject.doAs(Subject.java:422)
   >    at 
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1878)
   >    at 
org.apache.gravitino.catalog.hadoop.authentication.UserContext.doAs(UserContext.java:162)
   >    at 
org.apache.gravitino.catalog.hadoop.SecureHadoopCatalogOperations.createMultipleLocationFileset(SecureHadoopCatalogOperations.java:125)
   >    at 
org.apache.gravitino.catalog.FilesetOperationDispatcher.lambda$createMultipleLocationFileset$8(FilesetOperationDispatcher.java:153)
   >    at 
org.apache.gravitino.catalog.CatalogManager$CatalogWrapper.lambda$doWithFilesetOps$2(CatalogManager.java:171)
   >    at 
org.apache.gravitino.utils.IsolatedClassLoader.withClassLoader(IsolatedClassLoader.java:86)
   >    at 
org.apache.gravitino.catalog.CatalogManager$CatalogWrapper.doWithFilesetOps(CatalogManager.java:165)
   >    at 
org.apache.gravitino.catalog.FilesetOperationDispatcher.lambda$createMultipleLocationFileset$9(FilesetOperationDispatcher.java:151)
   >    at 
org.apache.gravitino.catalog.OperationDispatcher.doWithCatalog(OperationDispatcher.java:122)
   >    at 
org.apache.gravitino.catalog.FilesetOperationDispatcher.lambda$createMultipleLocationFileset$10(FilesetOperationDispatcher.java:148)
   >    at 
org.apache.gravitino.lock.TreeLockUtils.doWithTreeLock(TreeLockUtils.java:49)
   >    at 
org.apache.gravitino.catalog.FilesetOperationDispatcher.createMultipleLocationFileset(FilesetOperationDispatcher.java:144)
   >    at 
org.apache.gravitino.hook.FilesetHookDispatcher.createMultipleLocationFileset(FilesetHookDispatcher.java:75)
   >    at 
org.apache.gravitino.catalog.FilesetNormalizeDispatcher.createMultipleLocationFileset(FilesetNormalizeDispatcher.java:77)
   >    at 
org.apache.gravitino.listener.FilesetEventDispatcher.createMultipleLocationFileset(FilesetEventDispatcher.java:114)
   >    at 
org.apache.gravitino.server.web.rest.FilesetOperations.lambda$createFileset$2(FilesetOperations.java:142)
   >    at java.security.AccessController.doPrivileged(Native Method)
   >    at javax.security.auth.Subject.doAs(Subject.java:422)
   >    at 
org.apache.gravitino.utils.PrincipalUtils.doAs(PrincipalUtils.java:39)
   >    at org.apache.gravitino.server.web.Utils.doAs(Utils.java:198)
   >    at 
org.apache.gravitino.server.web.rest.FilesetOperations.createFileset(FilesetOperations.java:125)
   >    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:498)
   >    at 
org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52)
   >    at 
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146)
   >    at 
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189)
   >    at 
org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176)
   >    at 
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93)
   >    at 
org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478)
   >    at 
org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400)
   >    at 
org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81)
   >    at 
org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:256)
   >    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
   >    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
   >    at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
   >    at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
   >    at org.glassfish.jersey.internal.Errors.process(Errors.java:244)
   >    at 
org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)
   >    at 
org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:235)
   >    at 
org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:684)
   >    at 
org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394)
   >    at 
org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346)
   >    at 
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358)
   >    at 
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:311)
   >    at 
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)
   >    at 
org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)
   >    at 
org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656)
   >    at 
org.apache.gravitino.server.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:86)
   >    at 
org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
   >    at 
org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)
   >    at 
org.apache.gravitino.server.web.VersioningFilter.doFilter(VersioningFilter.java:111)
   >    at 
org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
   >    at 
org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)
   >    at 
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:552)
   >    at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
   >    at 
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600)
   >    at 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
   >    at 
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
   >    at 
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)
   >    at 
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
   >    at 
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)
   >    at 
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
   >    at 
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505)
   >    at 
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)
   >    at 
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
   >    at 
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)
   >    at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
   >    at 
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)
   >    at 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
   >    at org.eclipse.jetty.server.Server.handle(Server.java:516)
   >    at 
org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)
   >    at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)
   >    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)
   >    at 
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
   >    at 
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
   >    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) 
   
   ### How to reproduce
   
   For Java client:
   
   ```java
       GravitinoMetalake metalake = client.createMetalake("test_metalake", 
null, null);
       Catalog filesetCatalog =
           metalake.createCatalog("test_catalog", Catalog.Type.FILESET, 
"hadoop", null, null);
       filesetCatalog.asSchemas().createSchema("test_schema", null, null);
       filesetCatalog
           .asFilesetCatalog()
           .createFileset(NameIdentifier.of("test_schema", "test_fileset"), 
null, null, "", null);
   ```
   
   ### Additional context
   
   _No response_


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to