Configuration change validation has false positives
- Dominant language
- Go
- Stars
- 1.1k
- Forks
- 273
- Avg merge
- 4h 12m
- Merged PRs (30d)
- 10
Description
We currently validate configuration changes at proposal time
https://github.com/etcd-io/raft/blob/4abd9e927c6d5db930dfdb80237ac584449aeec7/raft.go#L1224-L1260
This is not very helpful because it has false positives (refusing a config change that is actually allowed) though at least it currently doesn't have false negatives (because the set of false positives is sufficiently large 😄)
It could be more effective to either compare against the actual most recent config change in the (including the unstable) log, or to move the verification to apply time (i.e. erroring out conf changes that are illegal).
See https://github.com/etcd-io/raft/pull/81.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with the validation logic in raft.go at lines 1224-1260, then read the linked discussion in pull request 81. Compare the proposal-time check with the most recent configuration change in the log, including unstable entries, and consider the alternative of validating at apply time. Done means illegal configuration changes are rejected without refusing valid changes.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- distributed-systems
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100