You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "Shannon Carey (JIRA)" <ji...@apache.org> on 2019/02/28 22:25:00 UTC

[jira] [Commented] (KAFKA-6979) Add max.block.ms to consumer for default timeout behavior

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

Shannon Carey commented on KAFKA-6979:
--------------------------------------

This change is very useful to prevent KafkaConsumer.position() from blocking forever when there is no leader for a partition. In previous versions of Kafka client (0.10, 0.11), the stack trace would look something like below, due to Fetcher#resetOffset() passing Long.MAX_VALUE as the timeout to Fetcher#retrieveOffsetsByTimes().

 
{code:java}
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.KQueueArrayWrapper.kevent0(KQueueArrayWrapper.java:-1)
at sun.nio.ch.KQueueArrayWrapper.poll(KQueueArrayWrapper.java:198)
at sun.nio.ch.KQueueSelectorImpl.doSelect(KQueueSelectorImpl.java:117)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
- locked <0x2562> (a sun.nio.ch.KQueueSelectorImpl)
- locked <0x2563> (a java.util.Collections$UnmodifiableSet)
- locked <0x2564> (a sun.nio.ch.Util$2)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
at org.apache.kafka.common.network.Selector.select(Selector.java:489)
at org.apache.kafka.common.network.Selector.poll(Selector.java:298)
at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:349)
at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:226)
- locked <0x2565> (a org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient)
at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:203)
at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.awaitMetadataUpdate(ConsumerNetworkClient.java:138)
at org.apache.kafka.clients.consumer.internals.Fetcher.retrieveOffsetsByTimes(Fetcher.java:422)
at org.apache.kafka.clients.consumer.internals.Fetcher.resetOffset(Fetcher.java:370)
at org.apache.kafka.clients.consumer.internals.Fetcher.resetOffsetsIfNeeded(Fetcher.java:227)
at org.apache.kafka.clients.consumer.KafkaConsumer.updateFetchPositions(KafkaConsumer.java:1592)
at org.apache.kafka.clients.consumer.KafkaConsumer.position(KafkaConsumer.java:1265)
{code}
 

 

> Add max.block.ms to consumer for default timeout behavior
> ---------------------------------------------------------
>
>                 Key: KAFKA-6979
>                 URL: https://issues.apache.org/jira/browse/KAFKA-6979
>             Project: Kafka
>          Issue Type: Improvement
>          Components: consumer
>            Reporter: Jason Gustafson
>            Assignee: Dhruvil Shah
>            Priority: Blocker
>             Fix For: 2.0.0
>
>
> Implement max.block.ms as described in KIP-266: https://cwiki.apache.org/confluence/display/KAFKA/KIP-266%3A+Fix+consumer+indefinite+blocking+behavior.



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