Tim Carey-Smith created KAFKA-5120:
--------------------------------------

             Summary: Several controller metrics block if controller lock is 
held by another thread
                 Key: KAFKA-5120
                 URL: https://issues.apache.org/jira/browse/KAFKA-5120
             Project: Kafka
          Issue Type: Bug
          Components: controller, metrics
    Affects Versions: 0.10.2.0
            Reporter: Tim Carey-Smith
            Priority: Minor


We have been tracking latency issues surrounding queries to Controller MBeans. 
Upon digging into the root causes, we discovered that several metrics acquire 
the controller lock within the gauge. 

The affected metrics are: 

* {{ActiveControllerCount}}
* {{OfflinePartitionsCount}}
* {{PreferredReplicaImbalanceCount}}

If the controller is currently holding the lock and a MBean request is 
received, the thread executing the request will block until the controller 
releases the lock. 

We discovered this in a cluster where the controller was holding the lock for 
extended periods of time for normal operations. We have documented this issue 
in KAFKA-5116. 

Several possible solutions exist: 

* Remove the lock from inside these {{Gauge}}s. 
* Store and update the metric values in {{AtomicLong}}s. 

Modifying the {{ActiveControllerCount}} metric seems to be straight-forward 
while the other 2 metrics seem to be more involved. 

We're happy to contribute a patch, but wanted to discuss potential solutions 
and their tradeoffs before proceeding. 



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to