Luke Chen created KAFKA-15218: --------------------------------- Summary: NPE will be thrown while deleting topic and fetch from follower concurrently Key: KAFKA-15218 URL: https://issues.apache.org/jira/browse/KAFKA-15218 Project: Kafka Issue Type: Bug Affects Versions: 3.5.0 Reporter: Luke Chen
When deleting topics, we'll first clear all the remoteReplicaMap when stopPartitions [here|https://github.com/apache/kafka/blob/2999168cde37142ae3a2377fe939d6b581e692b8/core/src/main/scala/kafka/server/ReplicaManager.scala#L554]. But this time, there might be fetch request coming from follower, and try to check if the replica is eligible to be added into ISR [here|https://github.com/apache/kafka/blob/2999168cde37142ae3a2377fe939d6b581e692b8/core/src/main/scala/kafka/cluster/Partition.scala#L1001]. At this moment, NPE will be thrown. Although it's fine since this topic is already deleted, it'd be better to avoid it happen. {code:java} java.lang.NullPointerException: Cannot invoke "kafka.cluster.Replica.stateSnapshot()" because the return value of "kafka.utils.Pool.get(Object)" is null at kafka.cluster.Partition.isReplicaIsrEligible(Partition.scala:992) ~[kafka_2.13-3.5.0.jar:?] at kafka.cluster.Partition.canAddReplicaToIsr(Partition.scala:974) ~[kafka_2.13-3.5.0.jar:?] at kafka.cluster.Partition.maybeExpandIsr(Partition.scala:947) ~[kafka_2.13-3.5.0.jar:?] at kafka.cluster.Partition.updateFollowerFetchState(Partition.scala:866) ~[kafka_2.13-3.5.0.jar:?] at kafka.cluster.Partition.fetchRecords(Partition.scala:1361) ~[kafka_2.13-3.5.0.jar:?] at kafka.server.ReplicaManager.read$1(ReplicaManager.scala:1164) ~[kafka_2.13-3.5.0.jar:?] at kafka.server.ReplicaManager.$anonfun$readFromLocalLog$7(ReplicaManager.scala:1235) ~[kafka_2.13-3.5.0.jar:?] at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:575) ~[scala-library-2.13.10.jar:?] at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:573) ~[scala-library-2.13.10.jar:?] at scala.collection.AbstractIterable.foreach(Iterable.scala:933) ~[scala-library-2.13.10.jar:?] at kafka.server.ReplicaManager.readFromLocalLog(ReplicaManager.scala:1234) ~[kafka_2.13-3.5.0.jar:?] at kafka.server.ReplicaManager.fetchMessages(ReplicaManager.scala:1044) ~[kafka_2.13-3.5.0.jar:?] at kafka.server.KafkaApis.handleFetchRequest(KafkaApis.scala:994) ~[kafka_2.13-3.5.0.jar:?] at kafka.server.KafkaApis.handle(KafkaApis.scala:181) ~[kafka_2.13-3.5.0.jar:?] at kafka.server.KafkaRequestHandler.run(KafkaRequestHandler.scala:76) ~[kafka_2.13-3.5.0.jar:?] at java.lang.Thread.run(Thread.java:1623) [?:?] {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)