Jason Gustafson created KAFKA-13447:
---------------------------------------

             Summary: Consumer should not reuse committed offset after topic 
recreation
                 Key: KAFKA-13447
                 URL: https://issues.apache.org/jira/browse/KAFKA-13447
             Project: Kafka
          Issue Type: Bug
            Reporter: Jason Gustafson


KAFKA-12257 fixes an issue in which the consumer is unable to make progress 
after a topic has been recreated. The problem was that the client could not 
distinguish between stale metadata with a lower leader epoch and a recreated 
topic with a lower leader epoch. With TopicId support in KIP-516, the client is 
able to tell when a topic has been recreated since the new topic will have a 
different ID. 

However, what the patch did not fix is the potential reuse of the current 
offset position on the recreated topic. For example, say that the consumer is 
at offset N when the topic gets recreated. Currently, the consumer will 
continue fetching from offset N after detecting the recreation. The most likely 
result of this is either an offset out of range error or a log truncation 
error, but it is also possible for the offset position to remain valid on the 
recreated topic (say for a low-volume topic where the offsets is already low, 
or a case where the consumer was down for a while). 

To fix this issue completely, we need to store the topicId along with the 
committed offset in __consumer_offsets. This would allow the consumer to detect 
when the offset is no longer relevant for the current topic. We also need to 
decide how to raise this case to the user. If the user has enabled automatic 
offset reset, we can probably use that. Otherwise, we might need a new 
exception type to signal the user that the position needs to be reset.





--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to