Add AllowInvariantViolations config, commit index regression test and… #53
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.
Attempt to resolve part of etcd-io/etcd#10166, #18, and #29.
IMHO it is hard to keep backwards compatible while introducing event-based log, since it will require the users to implement the new Event method in the log interface if they have implemented their own loggers.
Therefore, this commit only tries to introduce a new config option AllowInvariantViolation. If enabled, raft will try to recover from the commit index regression problem described in the above issues, rather than panic directly. The approach is exactly the one used in #25. This may not be suitable for more complex situations e.g. when leader transfer is happening, but is enough for simple case like the one in the test.
I'm very willing to discuss more about this.