You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "Ewen Cheslack-Postava (JIRA)" <ji...@apache.org> on 2015/07/29 18:26:04 UTC

[jira] [Resolved] (KAFKA-2382) KafkaConsumer seek methods should throw an exception when called for partitions not assigned to this consumer instance

     [ https://issues.apache.org/jira/browse/KAFKA-2382?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ewen Cheslack-Postava resolved KAFKA-2382.
------------------------------------------
    Resolution: Invalid

Ah, good call. Somehow I missed that, guess I didn't dig quite deep enough through the SubscriptionState code.

> 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)