Feature: Raft::trigger()::allow_next_revert()
allow to reset replication for next detected follower log revert
#1259
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Changelog
Feature:
Raft::trigger()::allow_next_revert()
allow to reset replication for next detected follower log revertThis method requests the RaftCore to allow to reset replication for a
specific node when log revert is detected.
allow=true
: This method instructs the RaftCore to allow the targetnode's log to revert to a previous state for one time.
allow=false
: This method instructs the RaftCore to panic if thetarget node's log revert
Behavior
target node from the beginning.
Automatic Replication Reset
When the
loosen-follower-log-revert
feature flag is enabled, theLeader automatically reset replication if it detects that the target
node's log has reverted. This feature is primarily useful in testing
environments.
Production Considerations
In production environments, state reversion is a critical issue that
should not be automatically handled. However, there may be scenarios
where a Follower's data is intentionally removed and needs to rejoin the
cluster(without membership changes). In such cases, the Leader should
reinitialize replication for that node with the following steps:
Shut down the target node.
call [
Self::allow_next_revert
] on the Leader.Clear the target node's data directory.
Restart the target node.
Fix: Make
loosen-follower-log-revert
a runtime functionality instead of a feature #1251This change is