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)