[ https://issues.apache.org/jira/browse/KAFKA-19198?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17947104#comment-17947104 ]
Andrew Schofield commented on KAFKA-19198: ------------------------------------------ We should use GroupMetadataManager.onNewMetadataImage to observe when topics are deleted and drive cleaning up. > Deletion of topic assigned to a share group can result in NPE > ------------------------------------------------------------- > > Key: KAFKA-19198 > URL: https://issues.apache.org/jira/browse/KAFKA-19198 > Project: Kafka > Issue Type: Sub-task > Reporter: Andrew Schofield > Assignee: Andrew Schofield > Priority: Major > > The problem is that the metadata image may not permit the retrieval of the > topic name by topic ID, and that results in an NPE. > java.util.concurrent.CompletionException: java.lang.NullPointerException: > Cannot invoke "org.apache.kafka.image.TopicImage.name()" because the return > value of > "org.apache.kafka.image.TopicsImage.getTopic(org.apache.kafka.common.Uuid)" > is null > java.util.concurrent.CompletionException: java.lang.NullPointerException: > Cannot invoke "org.apache.kafka.image.TopicImage.name()" because the return > value of > "org.apache.kafka.image.TopicsImage.getTopic(org.apache.kafka.common.Uuid)" > is null > at > java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:332) > at > java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:347) > at > java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1141) > at > java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) > at > java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2194) > at > org.apache.kafka.coordinator.common.runtime.CoordinatorRuntime$CoordinatorWriteEvent.complete(CoordinatorRuntime.java:1439) > at > org.apache.kafka.coordinator.common.runtime.CoordinatorRuntime$CoordinatorWriteEvent.run(CoordinatorRuntime.java:1415) > at > org.apache.kafka.coordinator.common.runtime.MultiThreadedEventProcessor$EventProcessorThread.handleEvents(MultiThreadedEventProcessor.java:147) > at > org.apache.kafka.coordinator.common.runtime.MultiThreadedEventProcessor$EventProcessorThread.run(MultiThreadedEventProcessor.java:179) > Caused by: java.lang.NullPointerException: Cannot invoke > "org.apache.kafka.image.TopicImage.name()" because the return value of > "org.apache.kafka.image.TopicsImage.getTopic(org.apache.kafka.common.Uuid)" > is null > at > org.apache.kafka.coordinator.group.GroupMetadataManager.attachTopicName(GroupMetadataManager.java:5088) > at > org.apache.kafka.coordinator.group.GroupMetadataManager.addInitializingTopicsRecords(GroupMetadataManager.java:3002) > at > org.apache.kafka.coordinator.group.GroupMetadataManager.maybeCreateInitializeShareGroupStateRequest(GroupMetadataManager.java:2956) > at > org.apache.kafka.coordinator.group.GroupMetadataManager.shareGroupHeartbeat(GroupMetadataManager.java:2871) > at > org.apache.kafka.coordinator.group.GroupMetadataManager.shareGroupHeartbeat(GroupMetadataManager.java:4938) > at > org.apache.kafka.coordinator.group.GroupCoordinatorShard.shareGroupHeartbeat(GroupCoordinatorShard.java:494) > at > org.apache.kafka.coordinator.group.GroupCoordinatorService.lambda$shareGroupHeartbeat$6(GroupCoordinatorService.java:453) > at > org.apache.kafka.coordinator.common.runtime.CoordinatorRuntime$CoordinatorWriteEvent.lambda$run$0(CoordinatorRuntime.java:1392) > at > org.apache.kafka.coordinator.common.runtime.CoordinatorRuntime.withActiveContextOrThrow(CoordinatorRuntime.java:2151) > at > org.apache.kafka.coordinator.common.runtime.CoordinatorRuntime$CoordinatorWriteEvent.run(CoordinatorRuntime.java:1390) > ... 2 more -- This message was sent by Atlassian Jira (v8.20.10#820010)