[
https://issues.apache.org/jira/browse/KAFKA-3310?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jun Rao updated KAFKA-3310:
---------------------------
Resolution: Fixed
Status: Resolved (was: Patch Available)
Issue resolved by pull request 989
[https://github.com/apache/kafka/pull/989]
> fetch requests can trigger repeated NPE when quota is enabled
> -------------------------------------------------------------
>
> Key: KAFKA-3310
> URL: https://issues.apache.org/jira/browse/KAFKA-3310
> Project: Kafka
> Issue Type: Bug
> Affects Versions: 0.9.0.0, 0.9.0.1
> Reporter: Jun Rao
> Assignee: Aditya Auradkar
> Priority: Blocker
> Fix For: 0.10.0.0
>
>
> We saw the following NPE when consumer quota is enabled. NPE is triggered on
> every fetch request from the client.
> java.lang.NullPointerException
> at
> kafka.server.ClientQuotaManager.recordAndMaybeThrottle(ClientQuotaManager.scala:122)
> at
> kafka.server.KafkaApis.kafka$server$KafkaApis$$sendResponseCallback$3(KafkaApis.scala:419)
> at
> kafka.server.KafkaApis$$anonfun$handleFetchRequest$1.apply(KafkaApis.scala:436)
> at
> kafka.server.KafkaApis$$anonfun$handleFetchRequest$1.apply(KafkaApis.scala:436)
> at kafka.server.ReplicaManager.fetchMessages(ReplicaManager.scala:481)
> at kafka.server.KafkaApis.handleFetchRequest(KafkaApis.scala:431)
> at kafka.server.KafkaApis.handle(KafkaApis.scala:69)
> at kafka.server.KafkaRequestHandler.run(KafkaRequestHandler.scala:60)
> at java.lang.Thread.run(Thread.java:745)
> One possible cause of this is the logic of removing inactive sensors.
> Currently, in ClientQuotaManager, we create two sensors per clientId: a
> throttleTimeSensor and a quotaSensor. Each sensor expires if it's not
> actively updated for 1 hour. What can happen is that initially, the quota is
> not exceeded. So, quotaSensor is being updated actively, but
> throttleTimeSensor is not. At some point, throttleTimeSensor is removed by
> the expiring thread. Now, we are in a situation that quotaSensor is
> registered, but throttleTimeSensor is not. Later on, if the quota is
> exceeded, we will hit the above NPE when trying to update throttleTimeSensor.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)