Ewen Cheslack-Postava created KAFKA-2382:
--------------------------------------------

             Summary: KafkaConsumer seek methods should throw an exception when 
called for partitions not assigned to this consumer instance
                 Key: KAFKA-2382
                 URL: https://issues.apache.org/jira/browse/KAFKA-2382
             Project: Kafka
          Issue Type: Bug
          Components: consumer
            Reporter: Ewen Cheslack-Postava
            Assignee: Neha Narkhede
             Fix For: 0.8.3


It looks like the current code for the consumer will blindly accept any seek 
calls, adding the offests to SubscriptionState. If the consumer is being used 
in simple consumer mode, this makes sense, but when using subscriptions & the 
consumer coordinator, this should be an error.

If a user accidentally invokes the seek at the wrong time, it will just get 
lost. As a simple example, if you start the consumer, subscribe, and then 
immediately seek, that seek will just get lost as soon as you call poll() and 
the initial join group + rebalance occurs. That sequence of calls simply 
shouldn't be valid since it doesn't make sense to seek() on a partition you 
haven't been assigned.

Relatedly, I think the current effect of doing this can result in incorrect 
behavior because SubscriptionState.hasAllFetchedPositions() only checks the 
size of the fetched map and assignedPartitions map. Since this bug allows 
adding arbitrary topic partitions to the fetched map, that check is not 
accurate.

This is probably related to KAFKA-2343, but that one is just a doc fix on how 
seek is supposed to behave wrt poll and rebalance.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to