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

   ### Version
   
   main branch
   
   ### Describe what's wrong
   
   **API:**
   
/api//metalakes/metalake01/catalogs/kafkaCatalog01/schemas/default/topics/xxxxxx
   
   
   
   
   **Reason:**
   Due to the cancellation of the operation to reload the topic to fill in its 
other properties after the alter operation in 
https://github.com/apache/gravitino/issues/3729, there is a risk that the value 
of the downstream property may return null, which in turn could trigger a 
NullPointerException in the properties() method of the Topic class.
   The specific code that triggers the NullPointerException is:
   `  @Override
     public Map<String, String> properties() {
       return topic.properties().entrySet().stream()
           .filter(p -> !hiddenProperties.contains(p.getKey()))
           .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
     }`
   
   ### Error message and/or stacktrace
   
   
   **stackTrace**
   {
       "code": 1002,
       "type": "RuntimeException",
       "message": "Failed to operate object [xxxxxx] operation [ALTER] under 
[default], reason []",
       "stack": [
           "java.lang.NullPointerException",
           "\tat java.util.HashMap.merge(HashMap.java:1225)",
           "\tat 
java.util.stream.Collectors.lambda$toMap$58(Collectors.java:1320)",
           "\tat 
java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)",
           "\tat 
java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)",
           "\tat 
java.util.HashMap$EntrySpliterator.forEachRemaining(HashMap.java:1696)",
           "\tat 
java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)",
           "\tat 
java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)",
           "\tat 
java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)",
           "\tat 
java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)",
           "\tat 
java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)",
           "\tat 
org.apache.gravitino.catalog.EntityCombinedTopic.properties(EntityCombinedTopic.java:87)",
           "\tat 
org.apache.gravitino.listener.api.info.TopicInfo.<init>(TopicInfo.java:43)",
           "\tat 
org.apache.gravitino.listener.TopicEventDispatcher.alterTopic(TopicEventDispatcher.java:80)",
           "\tat 
org.apache.gravitino.bili.onemeta.rest.TopicOperations.lambda$alterTopic$5(TopicOperations.java:195)",
           "\tat 
org.apache.gravitino.lock.TreeLockUtils.doWithTreeLock(TreeLockUtils.java:49)",
           "\tat 
org.apache.gravitino.bili.onemeta.rest.TopicOperations.lambda$alterTopic$6(TopicOperations.java:192)",
           "\tat java.security.AccessController.doPrivileged(Native Method)",
           "\tat javax.security.auth.Subject.doAs(Subject.java:422)",
           "\tat 
org.apache.gravitino.utils.PrincipalUtils.doAs(PrincipalUtils.java:39)",
           "\tat org.apache.gravitino.server.web.Utils.doAs(Utils.java:188)",
           "\tat 
org.apache.gravitino.bili.onemeta.rest.TopicOperations.alterTopic(TopicOperations.java:180)",
           "\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)",
           "\tat 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)",
           "\tat 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)",
           "\tat java.lang.reflect.Method.invoke(Method.java:498)",
           "\tat 
org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52)",
           "\tat 
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146)",
           "\tat 
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189)",
           "\tat 
org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176)",
           "\tat 
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93)",
           "\tat 
org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478)",
           "\tat 
org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400)",
           "\tat 
org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81)",
           "\tat 
org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:256)",
           "\tat org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)",
           "\tat org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)",
           "\tat org.glassfish.jersey.internal.Errors.process(Errors.java:292)",
           "\tat org.glassfish.jersey.internal.Errors.process(Errors.java:274)",
           "\tat org.glassfish.jersey.internal.Errors.process(Errors.java:244)",
           "\tat 
org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)",
           "\tat 
org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:235)",
           "\tat 
org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:684)",
           "\tat 
org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394)",
           "\tat 
org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346)",
           "\tat 
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358)",
           "\tat 
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:311)",
           "\tat 
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)",
           "\tat 
org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)",
           "\tat 
org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656)",
           "\tat 
org.apache.gravitino.server.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:91)",
           "\tat 
org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)",
           "\tat 
org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)",
           "\tat 
org.apache.gravitino.server.web.VersioningFilter.doFilter(VersioningFilter.java:123)",
           "\tat 
org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)",
           "\tat 
org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)",
           "\tat 
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:552)",
           "\tat 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)",
           "\tat 
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600)",
           "\tat 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)",
           "\tat 
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)",
           "\tat 
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)",
           "\tat 
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)",
           "\tat 
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)",
           "\tat 
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)",
           "\tat 
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505)",
           "\tat 
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)",
           "\tat 
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)",
           "\tat 
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)",
           "\tat 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)",
           "\tat 
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)",
           "\tat 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)",
           "\tat org.eclipse.jetty.server.Server.handle(Server.java:516)",
           "\tat 
org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)",
           "\tat 
org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)",
           "\tat 
org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)",
           "\tat 
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)",
           "\tat 
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)",
           "\tat 
org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)",
           "\tat 
org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)",
           "\tat 
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)",
           "\tat 
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)",
           "\tat 
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)",
           "\tat 
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)",
           "\tat 
org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)",
           "\tat 
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)",
           "\tat 
org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)",
           "\tat java.lang.Thread.run(Thread.java:748)"
       ]
   }
   
   ### How to reproduce
   
   When initializing the Topic Table class object, put the key -> null into it.
   
   
   ### 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