Yicheng Qin
c86f484712
raft: make judge clear
2014-09-03 09:05:12 -07:00
Yicheng Qin
7dc02b947d
raft: refine TestVote
2014-09-03 09:05:12 -07:00
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