Shivsundar R created KAFKA-20750:
------------------------------------

             Summary: Divide-by-zero error in PollIdleRatio metric during 
sub-millisecond poll intervals.
                 Key: KAFKA-20750
                 URL: https://issues.apache.org/jira/browse/KAFKA-20750
             Project: Kafka
          Issue Type: Improvement
            Reporter: Shivsundar R


In KafkaConsumerMetrics (and KafkaShareConsumerMetrics), we calculate 
pollIdleRatio the following way.
{code:java}
public void recordPollStart(long pollStartMs) {
    this.pollStartMs = pollStartMs;
    this.timeSinceLastPollMs = lastPollMs != 0L ? pollStartMs - lastPollMs : 0;
    this.timeBetweenPollSensor.record(timeSinceLastPollMs);
    this.lastPollMs = pollStartMs;
}

public void recordPollEnd(long pollEndMs) {
    long pollTimeMs = pollEndMs - pollStartMs;
    double pollIdleRatio = pollTimeMs * 1.0 / (pollTimeMs + 
timeSinceLastPollMs);
    this.pollIdleSensor.record(pollIdleRatio);
} {code}
So in cases of high throughput and fast polls, there is a chance of getting 
sub-millisecond poll processing time and the next poll starting in the same 
millisecond (Observed in local broker testing) giving a zero in the denominator.
In this case, we see a NaN as the metric value observed. This should instead be 
a 0, needs a simple check for 0 in the denominator.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to