Commit Graph

216 Commits

Author SHA1 Message Date
7cdd148e24 raft: StartCluster -> Dictate 2014-09-03 09:05:09 -07:00
1a75beb57c raft: add confAdd and confRemove entry type 2014-09-03 09:05:09 -07:00
b5f887f5d2 raft: add cluster test 2014-09-03 09:05:09 -07:00
5cad4e595c raft: add create cluster of itself 2014-09-03 09:05:09 -07:00
193756fa38 raft: add remove node 2014-09-03 09:05:09 -07:00
961518c893 raft: execute log entries in node.step 2014-09-03 09:05:09 -07:00
989f41477d raft: rename peer -> peers 2014-09-03 09:05:09 -07:00
c03fbf68d6 raft: add conf safety
To make configuration change safe without adding configuration protocol:

1. We only allow to add/remove one node at a time.

2. We only allow one uncommitted configuration entry in the log.

These two rules can make sure there is no disjoint quorums in both current cluster and the
future(after applied any number of committed entries or uncommitted entries in log) clusters.

We add a type field in Entry structure for two reasons:

1. Statemachine needs to know if there is a pending configuration change.

2. Configuration entry should be executed by raft package rather application who is using raft.
2014-09-03 09:05:09 -07:00
853a458a0d raft: change ins from array to map 2014-09-03 09:05:09 -07:00
4d22ff90d5 raft: refactor network simulator
Signed-off-by: Blake Mizerany <blake.mizerany@gmail.com>
2014-09-03 09:05:08 -07:00
09d1575eeb raft: node.tick 2014-09-03 09:05:08 -07:00
c223eca938 raft: clean stateMachine 2014-09-03 09:05:06 -07:00
5b052e1e10 raft: prop msg type should be MsgProp 2014-09-03 09:05:06 -07:00
6e0a668455 raft: add Node.Next 2014-09-03 09:05:05 -07:00
9545662c6b raft: return *Node 2014-09-03 09:05:05 -07:00
50e0db4038 raft: attempt first version of Interface 2014-09-03 09:05:05 -07:00