Hoverbear / old-raft-rs

[Incomplete] A Raft implementation in Rust
https://hoverbear.github.io/raft-rs/raft/
MIT License
266 stars 41 forks source link

Future #13

Closed Hoverbear closed 9 years ago

Hoverbear commented 9 years ago

CC @danburkert How does this look for a plan for the next week or so?

  1. [x] Get master working.
  2. [x] Cherry-pick state machine changes from https://github.com/danburkert/raft/tree/state-machine into Master.
  3. [ ] Code review and clarification. Keeping true to the Raft paper wherever possible
    • I noticed, for example, this is perhaps incorrect.
  4. [ ] Use Cap'n Proto RPCs instead of structs. (@hoverbear volunteers)
  5. [ ] Firm up interfaces and build tests/examples.
danburkert commented 9 years ago

Looks good to me. Merging my state-machine branch is going to be tough, since the code is pretty much a rewrite, but it doesn't implement most of the Raft functionality (way less than the existing master). Perhaps it would be easier/cleaner to just cherry pick out the good ideas from that branch and merge them over manually.

danburkert commented 9 years ago

Also, messenger.rs is not used, that was leftover from an earlier iteration. The real implementation of that is here, and is essentially a hand rolled RPC system. I think it is correct to retry failed RPCs indefinitely, I remember the paper saying that but I need to go back and look.

Hoverbear commented 9 years ago

Okay lets cherry pick then. I will work on RPC this week. Would you be willing to work on the state-machine things since I'm not totally familiar with what's ready?

Hoverbear commented 9 years ago

@danburkert Do you think we should merge the mio branch? I got it building tonight. It is old_io free and is probably much farther along than master even though it's not fully implemented.

Hoverbear commented 9 years ago

@danburkert Do you think the client interface we discussed would be between non-participants in Raft and Raft Nodes, or just between Raft nodes?

Hoverbear commented 9 years ago

@danburkert Please make sure to mark incomplete functions with unimplemented!(), thanks!

Hoverbear commented 9 years ago

@danburkert I did some integration tonight. Most of RaftNode has been stripped down to just network related functionality. I've also added some primitive TCP handling, I suspect once things start working we can move to persisted streams.

https://github.com/Hoverbear/raft/commit/95e4d15e399af28e2c3d5c3535595bcb7775c193