280 Commits

Author SHA1 Message Date
Yicheng Qin
095251f1fa raft: Network supports discontinuous ids 2014-09-03 09:05:12 -07:00
Blake Mizerany
5778c49689 raft: set term in reset 2014-09-03 09:05:11 -07:00
Xiang Li
3817661f82 raft: rename ConfigAdd/ConfigRemove -> AddNode/RemoveNode 2014-09-03 09:05:11 -07:00
Xiang Li
9f315ffe10 raft: make entry type public 2014-09-03 09:05:11 -07:00
Blake Mizerany
e5b9e22518 raft: Step returns ok 2014-09-03 09:05:11 -07:00
Xiang Li
cc3a8e26c8 raft: add leader change test for configuration 2014-09-03 09:05:10 -07:00
Blake Mizerany
abd2448931 raft: addr -> id 2014-09-03 09:05:10 -07:00
Xiang Li
1a75beb57c raft: add confAdd and confRemove entry type 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
Xiang Li
5d710c0f7a raft: add recvMsgBeat test 2014-09-03 09:05:08 -07:00
Xiang Li
12572e5412 raft: add state transition test 2014-09-03 09:05:08 -07:00
Xiang Li
920b80c41f raft: add single node commit test 2014-09-03 09:05:08 -07:00
Xiang Li
8111d4fbb8 raft: introduce network.cut 2014-09-03 09:05:08 -07:00
Xiang Li
a6a63d116f raft: add a test for commit rule 2014-09-03 09:05:08 -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
c32d34166e raft: leader updates its own match; tries to commit after a prop 2014-09-03 09:05:08 -07:00
Xiang Li
167ef7e8b0 raft: test leader replies to appResp 2014-09-03 09:05:08 -07:00
Xiang Li
b3de2b3450 raft: testVote - breaks state machine init to multiple lines 2014-09-03 09:05:07 -07:00
Xiang Li
59a720d8be raft: vote test for candidate and leader 2014-09-03 09:05:07 -07:00
Xiang Li
93b08502e4 raft: check voteFor 2014-09-03 09:05:07 -07:00
Yicheng Qin
c1c45575be raft: ins: []*index -> []index
It could make raft faster, use less storage.
2014-09-03 09:05:07 -07:00
Xiang Li
1170c21f89 raft: add a single candidate test 2014-09-03 09:05:07 -07:00
Xiang Li
0cdd1b58a4 raft: rename log.commit to log.committed 2014-09-03 09:05:07 -07:00
Xiang Li
4c609ec59c raft: new log struct 2014-09-03 09:05:06 -07:00
Xiang Li
74737b76cc raft: leader commit and test
Signed-off-by: Blake Mizerany <blake.mizerany@gmail.com>
2014-09-03 09:05:06 -07:00
Xiang Li
c223eca938 raft: clean stateMachine 2014-09-03 09:05:06 -07:00
Xiang Li
73e3394d2d raft: reverse sort to figure out the ci 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
Blake Mizerany
8d7be33dd8 raft: move to raft pkg 2014-09-03 09:05:05 -07:00