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]