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]
