jsancio commented on a change in pull request #9553:
URL: https://github.com/apache/kafka/pull/9553#discussion_r547475978
##########
File path: raft/src/main/java/org/apache/kafka/raft/KafkaRaftClient.java
##########
@@ -1037,6 +1047,35 @@ private boolean handleFetchResponse(
logger.info("Truncated to offset {} from Fetch response
from leader {}",
truncationOffset, quorum.leaderIdOrNil());
});
+ } else if (partitionResponse.snapshotId().epoch() >= 0 ||
+ partitionResponse.snapshotId().endOffset() >= 0) {
+ // The leader is asking us to fetch a snapshot
+
+ if (partitionResponse.snapshotId().epoch() < 0) {
+ throw new KafkaException(
Review comment:
Yeah. I am not sure. If these exception are thrown then it means that
the epoch is "valid" but the end offset is not "valid" or vice versa. I think
this could happen because of either a buggy remote replica or corrupted data in
the remote replica.
I guess you can argue that it is safe to keep retrying.
In the case that the `Fetch` never succeed do we want to transition to the
candidate the state? If so, let me add a test that confirms that.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]