You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "Hamidreza Afzali (JIRA)" <ji...@apache.org> on 2017/06/02 09:23:07 UTC

[jira] [Commented] (KAFKA-5368) Kafka Streams skipped-records-rate sensor produces nonzero values when the timestamps are valid

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

Hamidreza Afzali commented on KAFKA-5368:
-----------------------------------------

*Problem:*

Skipped records sensor is using a {{Rate}} of type {{Count}} for skipped-records-rate metric.

In {{org.apache.kafka.streams.processor.internals.StreamThread#addRecordsToTasks}} the Count value is incremented by one regardless of the number of skipped records, i.e. the value increments even if no record is skipped.


{code}
skippedRecordsSensor.add(metrics.metricName("skipped-records-rate", this.groupName, "The average per-second number of skipped records.", this.tags), new Rate(new Count()));

...

private void addRecordsToTasks(final ConsumerRecords<byte[], byte[]> records) {
    if (records != null && !records.isEmpty()) {
        ...
        streamsMetrics.skippedRecordsSensor.record(records.count() - numAddedRecords, timerStartedMs);
    }
}
{code}

{{org.apache.kafka.streams.processor.internals.StreamThread#addRecordsToTasks}} is called in {{org.apache.kafka.streams.processor.internals.StreamThread#runLoop}} after each successful poll request.

{code}

private void runLoop() {
    ...
    while (stillRunning()) {
        ...
        final ConsumerRecords<byte[], byte[]> records = pollRequests(pollTimeMs);
        if (records != null && !records.isEmpty() && !activeTasks.isEmpty()) {
            streamsMetrics.pollTimeSensor.record(computeLatency(), timerStartedMs);
            addRecordsToTasks(records);
            ...
        }
        ...
    }
    ...
}
{code}

This can explain why skipped-records-rate is equal to poll-rate.

*Solution:*

The sensor should keep a sum of all skipped records.



> Kafka Streams skipped-records-rate sensor produces nonzero values when the timestamps are valid
> -----------------------------------------------------------------------------------------------
>
>                 Key: KAFKA-5368
>                 URL: https://issues.apache.org/jira/browse/KAFKA-5368
>             Project: Kafka
>          Issue Type: Bug
>          Components: streams
>            Reporter: Hamidreza Afzali
>            Assignee: Hamidreza Afzali
>
> Kafka Streams skipped-records-rate sensor produces nonzero values even when the timestamps are valid and records are processed. The values are equal to poll-rate.
> Related issue: KAFKA-5055 



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