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)