Jason Gustafson created KAFKA-4226:
--------------------------------------
Summary: Surprising NoOffsetForPartitionException for paused
partition with no reset policy
Key: KAFKA-4226
URL: https://issues.apache.org/jira/browse/KAFKA-4226
Project: Kafka
Issue Type: Improvement
Components: consumer
Reporter: Jason Gustafson
Priority: Minor
If the user has no reset policy defined (i.e. auto.offset.reset is "none"),
then the consumer raises {{NoOffsetForPartitionException}} if it ever
encounters a situation in which it needs to reset the offset for that
partition. For example, this can happen when the consumer needs to set the
partition's initial position or if it encounters an out of range offset error
from a fetch. This option is helpful when you need direct control over the
behavior in these cases.
I was a little surprised that the consumer currently raises this exception even
if the partition is in a paused state. So the following code raises the
exception:
{code}
consumerConfig.setProperty(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "none")
val consumer = new KafkaConsumer(consumerConfig)
consumer.assign(singleton(partition))
consumer.pause(singleton(partition))
consumer.poll(0)
{code}
Since we do not send any fetches when the partition is paused, it seems like we
could delay setting the offset for the partition until it is resumed. In that
case, the poll(0) would not raise in the example above. This would be a
relatively easy change, but I'm not sure if there are any downsides.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)