raft icon indicating copy to clipboard operation
raft copied to clipboard

raftLog: decouple log data structure and flow control

Open pav-kv opened this issue 1 year ago • 5 comments

The raftLog structure currently plays multiple roles. Notably:

  • Provides read/write access to the raft log (both the unstable in-memory part, and the Storage 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 avatar Jan 27 '24 20:01 pav-kv

@pav-kv can i take this ?

Elbehery avatar Jan 27 '24 21:01 Elbehery

@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.

pav-kv avatar Jan 27 '24 22:01 pav-kv

sgtm, please assign me 👍🏽

Elbehery avatar Jan 28 '24 00:01 Elbehery

@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.

pav-kv avatar Jan 30 '24 02:01 pav-kv

Is this still needed? This looks like a nice task, and I would be happy to work on it.

nizanshami avatar Jun 03 '24 11:06 nizanshami