216 Commits

Author SHA1 Message Date
Blake Mizerany
7cdd148e24 raft: StartCluster -> Dictate 2014-09-03 09:05:09 -07:00
Xiang Li
1a75beb57c raft: add confAdd and confRemove entry type 2014-09-03 09:05:09 -07:00
Yicheng Qin
b5f887f5d2 raft: add cluster test 2014-09-03 09:05:09 -07:00
Yicheng Qin
5cad4e595c raft: add create cluster of itself 2014-09-03 09:05:09 -07:00
Yicheng Qin
193756fa38 raft: add remove node 2014-09-03 09:05:09 -07:00
Xiang Li
961518c893 raft: execute log entries in node.step 2014-09-03 09:05:09 -07:00
Xiang Li
989f41477d raft: rename peer -> peers 2014-09-03 09:05:09 -07:00
Xiang Li
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
Xiang Li
853a458a0d raft: change ins from array to map 2014-09-03 09:05:09 -07:00
Yicheng Qin
4d22ff90d5 raft: refactor network simulator
Signed-off-by: Blake Mizerany <blake.mizerany@gmail.com>
2014-09-03 09:05:08 -07:00
Xiang Li
09d1575eeb raft: node.tick 2014-09-03 09:05:08 -07:00
Xiang Li
c223eca938 raft: clean stateMachine 2014-09-03 09:05:06 -07:00
Xiang Li
5b052e1e10 raft: prop msg type should be MsgProp 2014-09-03 09:05:06 -07:00
Blake Mizerany
6e0a668455 raft: add Node.Next 2014-09-03 09:05:05 -07:00
Blake Mizerany
9545662c6b raft: return *Node 2014-09-03 09:05:05 -07:00
Blake Mizerany
50e0db4038 raft: attempt first version of Interface 2014-09-03 09:05:05 -07:00