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)

Reply via email to