[ https://issues.apache.org/jira/browse/KAFKA-3177?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15214479#comment-15214479 ]
Jason Gustafson commented on KAFKA-3177: ---------------------------------------- [~becket_qin] Got sidetracked, but working on this now. I talked with [~guozhang] offline and we were thinking it may be sufficient to log a warning in this case for now. Longer term, we could add a "max.block.ms" like the producer to handle this problem more generally for all of the consumer's blocking APIs. I think that's what you're suggesting above. Does that sound reasonable? > Kafka consumer can hang when position() is called on a non-existing partition. > ------------------------------------------------------------------------------ > > Key: KAFKA-3177 > URL: https://issues.apache.org/jira/browse/KAFKA-3177 > Project: Kafka > Issue Type: Bug > Components: clients > Affects Versions: 0.9.0.0 > Reporter: Jiangjie Qin > Assignee: Jason Gustafson > Priority: Critical > Fix For: 0.10.1.0 > > > This can be easily reproduced as following: > {code} > { > ... > consumer.assign(SomeNonExsitingTopicParition); > consumer.position(); > ... > } > {code} > It seems when position is called we will try to do the following: > 1. Fetch committed offsets. > 2. If there is no committed offsets, try to reset offset using reset > strategy. in sendListOffsetRequest(), if the consumer does not know the > TopicPartition, it will refresh its metadata and retry. In this case, because > the partition does not exist, we fall in to the infinite loop of refreshing > topic metadata. > Another orthogonal issue is that if the topic in the above code piece does > not exist, position() call will actually create the topic due to the fact > that currently topic metadata request could automatically create the topic. > This is a known separate issue. -- This message was sent by Atlassian JIRA (v6.3.4#6332)