[ https://issues.apache.org/jira/browse/KAFKA-10800?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17331149#comment-17331149 ]
Haoran Xuan commented on KAFKA-10800: ------------------------------------- [~jagsancio] Thanks for the clarification, now I'm clear about the validation part. :) About these: {code:java} 1. Set the baseOffset to the snapshotId's endOffset - 1 for every record batch. 2. Set the relative offset for every record to 0. 3. Se the epoch of every batch to the snapshotId's epoch.{code} I think it's easy to understand 3, but I'm curious why would we need to do 1 and 2? I guess there should be some benefit or restriction which I'm not realized? Thanks! > Validate the snapshot id when the state machine creates a snapshot > ------------------------------------------------------------------ > > Key: KAFKA-10800 > URL: https://issues.apache.org/jira/browse/KAFKA-10800 > Project: Kafka > Issue Type: Sub-task > Components: replication > Reporter: Jose Armando Garcia Sancio > Assignee: Haoran Xuan > Priority: Major > > When the state machine attempts to create a snapshot writer we should > validate that the following is true: > # The end offset and epoch of the snapshot is less than the high-watermark. > # The end offset and epoch of the snapshot is valid based on the leader > epoch cache. > Note that this validation should not be performed when the raft client > creates the snapshot writer because in that case the local log is out of date > and the follower should trust the snapshot id sent by the partition leader. -- This message was sent by Atlassian Jira (v8.3.4#803005)