You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "Sagar Rao (Jira)" <ji...@apache.org> on 2023/07/20 10:27:00 UTC
[jira] [Assigned] (KAFKA-15218) NPE will be thrown while deleting topic and fetch from follower concurrently
[ https://issues.apache.org/jira/browse/KAFKA-15218?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sagar Rao reassigned KAFKA-15218:
---------------------------------
Assignee: Sagar Rao
> 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
> Assignee: Sagar Rao
> Priority: Major
>
> 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)