Lianet Magrans created KAFKA-17448: -------------------------------------- Summary: New consumer seek should update positions in background thread Key: KAFKA-17448 URL: https://issues.apache.org/jira/browse/KAFKA-17448 Project: Kafka Issue Type: Bug Components: consumer Affects Versions: 3.7.1, 3.8.0, 3.7.0 Reporter: Lianet Magrans
In the new AsyncKafkaConsumer, a call to seek will update the positions in subscription state for the assigned partitions in the app thread ([https://github.com/apache/kafka/blob/c23b6b0365af5c58b76d8ad3fb628f766f95348f/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AsyncKafkaConsumer.java#L796]) This could lead to race conditions like we've seen when subscription state changes in the app thread (over a set of assigned partitions), that could have been modified in the background thread, leading to errors on "No current assignment for partition " [https://github.com/apache/kafka/blob/c23b6b0365af5c58b76d8ad3fb628f766f95348f/clients/src/main/java/org/apache/kafka/clients/consumer/internals/SubscriptionState.java#L378] Also, positions update is moved the background with KAFKA-17066 for the same reason, so even if the assignment does not change, we could have a race between the background setting positions to the committed offsets for instance, and the app thread setting them manually via seek. To avoid all of the above, we should have seek generate an event, send it to the background, and then update the subscription state when processing that event (similar to other api calls, ex, assign with KAFKA-17064) -- This message was sent by Atlassian Jira (v8.20.10#820010)