raft
raft copied to clipboard
raftLog: decouple log data structure and flow control
The raftLog structure currently plays multiple roles. Notably:
- Provides read/write access to the raft log (both the
unstable
in-memory part, and theStorage
part), and keeps the basic metadata about the log. - To some degree, ensures correctness w.r.t. the core
raft
algorithm. - Implements flow control mechanisms for applying the commands from this log.
The flow control role is quite distinct from the other roles, and is less fundamental. It should be decoupled. Once decoupling is done, raftLog
can be isolated in its own package and rigorously tested without assumptions about the flow.
Related to #64, though this clean-up has value on its own.
@pav-kv can i take this ?
@Elbehery Sure, give it a try. I got to say that good first issue
might be an understatement, doing this requires some familiarity with this repo. LMK if I can help figuring things out (I don't know if you're already familiar).
The complexity may vary here depending on how far we go with it. But we can start with simple mechanical decoupling, and revisiting the tests.
Also, let's not merge big changes before the release #89 is done. We can prepare the change in parallel though.
sgtm, please assign me 👍🏽
@Elbehery Feel free to send PRs / contribute and tag things "Part of #142". This is more like an umbrella issue and doesn't need an assignee, IMO. I'm also working on related parts at the moment.
Is this still needed? This looks like a nice task, and I would be happy to work on it.