[ 
https://issues.apache.org/jira/browse/KAFKA-7565?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16767474#comment-16767474
 ] 

Rajini Sivaram commented on KAFKA-7565:
---------------------------------------

[~hachikuji] I am not sure if this is covered by your PR for KAFKA-7831. 

We have a check for whether the partitions returned in a fetch response are 
still in the fetch session and we return if that is not the case: 
https://github.com/apache/kafka/blob/b02b5b63a5d43ab552c6cec1237707b2edd1bb36/clients/src/main/java/org/apache/kafka/clients/consumer/internals/Fetcher.java#L234

Further down in the code, we assume that the partitions do exist in the session 
and access the partitions without checking for null: 
https://github.com/apache/kafka/blob/b02b5b63a5d43ab552c6cec1237707b2edd1bb36/clients/src/main/java/org/apache/kafka/clients/consumer/internals/Fetcher.java#L243

Presumably fetch session partitions can change in between lines 234 aand 243 
since the response could be processed on the heartbeat thread. With the changes 
from your PR for KAFKA-7831, can we guarantee that the session partitions wont 
change?

> NPE in KafkaConsumer
> --------------------
>
>                 Key: KAFKA-7565
>                 URL: https://issues.apache.org/jira/browse/KAFKA-7565
>             Project: Kafka
>          Issue Type: Bug
>          Components: clients
>    Affects Versions: 1.1.1
>            Reporter: Alexey Vakhrenev
>            Priority: Critical
>             Fix For: 2.2.0
>
>
> The stacktrace is
> {noformat}
> java.lang.NullPointerException
>         at 
> org.apache.kafka.clients.consumer.internals.Fetcher$1.onSuccess(Fetcher.java:221)
>         at 
> org.apache.kafka.clients.consumer.internals.Fetcher$1.onSuccess(Fetcher.java:202)
>         at 
> org.apache.kafka.clients.consumer.internals.RequestFuture.fireSuccess(RequestFuture.java:167)
>         at 
> org.apache.kafka.clients.consumer.internals.RequestFuture.complete(RequestFuture.java:127)
>         at 
> org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient$RequestFutureCompletionHandler.fireCompletion(ConsumerNetworkClient.java:563)
>         at 
> org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.firePendingCompletedRequests(ConsumerNetworkClient.java:390)
>         at 
> org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:244)
>         at 
> org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:233)
>         at 
> org.apache.kafka.clients.consumer.KafkaConsumer.pollOnce(KafkaConsumer.java:1171)
>         at 
> org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1115)
> {noformat}
> Couldn't find minimal reproducer, but it happens quite often in our system. 
> We use {{pause()}} and {{wakeup()}} methods quite extensively, maybe it is 
> somehow related.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to