Shixiong Zhu created KAFKA-7703:
-----------------------------------

             Summary: KafkaConsumer.position may return a wrong offset after 
"seekToEnd" is called
                 Key: KAFKA-7703
                 URL: https://issues.apache.org/jira/browse/KAFKA-7703
             Project: Kafka
          Issue Type: Bug
          Components: clients
    Affects Versions: 2.1.0
            Reporter: Shixiong Zhu


After "seekToEnd" is called, "KafkaConsumer.position" may return a wrong offset 
set by another reset request.

Here is a reproducer: 
https://github.com/zsxwing/kafka/commit/4e1aa11bfa99a38ac1e2cb0872c055db56b33246

In this reproducer, "poll(0)" will send an "earliest" request in background. 
However, after "seekToEnd" is called, due to a race condition in 
"Fetcher.resetOffsetIfNeeded" (It's not atomic, "seekToEnd" could happen 
between 
https://github.com/zsxwing/kafka/commit/4e1aa11bfa99a38ac1e2cb0872c055db56b33246#diff-b45245913eaae46aa847d2615d62cde0R585
 and 
https://github.com/zsxwing/kafka/commit/4e1aa11bfa99a38ac1e2cb0872c055db56b33246#diff-b45245913eaae46aa847d2615d62cde0R605),
 "KafkaConsumer.position" may return an "earliest" offset.




--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to