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)