Yicheng Qin
8eac28350d
raft: avoid unexpected self-bootstrap state machine
2014-09-03 09:05:12 -07:00
Xiang Li
62bdcf6f49
raft: range over sm.ins
2014-09-03 09:05:12 -07:00
Blake Mizerany
5778c49689
raft: set term in reset
2014-09-03 09:05:11 -07:00
Blake Mizerany
67808f8db1
raft: remove vestigial canStep
2014-09-03 09:05:11 -07:00
Blake Mizerany
6044b1a0d7
raft: break Step into pieces
2014-09-03 09:05:11 -07:00
Xiang Li
f387e3e27d
raft: add Entry.isConfig
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
15a8b46359
raft: add/remove -> addNode/removeNode
2014-09-03 09:05:11 -07:00
Blake Mizerany
e5b9e22518
raft: Step returns ok
2014-09-03 09:05:11 -07:00
Blake Mizerany
a10461f60d
raft: Add/Remove -> add/remove
2014-09-03 09:05:11 -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
989f41477d
raft: rename peer -> peers
2014-09-03 09:05:09 -07:00
Xiang Li
8ce6b94e05
raft: add and remove
2014-09-03 09:05:09 -07:00
Xiang Li
d293c4915c
raft: fix pendingConf
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
f9c299da8b
raft: return after handling msgBeat
...
It makes the workflow more clear.
2014-09-03 09:05:09 -07:00
Xiang Li
28f87c2a43
raft: use sm.maybeCommit; should not call log.maybeCommit directly
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
6fa74b0e33
raft: do bcast when receiving msgBeat
2014-09-03 09:05:08 -07:00
Xiang Li
09d1575eeb
raft: node.tick
2014-09-03 09:05:08 -07:00
Xiang Li
eff3aadba1
raft: add full stop to every function comment
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
9bb7265d64
raft: leader only sends append to the unsynced peer when get a bad appResp
2014-09-03 09:05:07 -07:00
Xiang Li
88674a623a
raft: use if statement to handle voteResp
2014-09-03 09:05:07 -07:00
Xiang Li
828a8cf326
raft: leader denies vote with the same term
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
2066ff5acb
raft: candidate should become leader directly if it is a one node cluster
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
1f0e13e956
raft: remove sm.voteWorthy
2014-09-03 09:05:06 -07:00
Xiang Li
bee9d8bea5
raft: add log.maybeAppend
2014-09-03 09:05:06 -07:00
Xiang Li
b70be19653
raft: add log.maybeCommit
2014-09-03 09:05:06 -07:00
Xiang Li
092461d7c8
raft: rename log.len to log.lastIndex
2014-09-03 09:05:06 -07:00
Xiang Li
8f3d109c18
raft: rename log.isOk to log.matchTerm
2014-09-03 09:05:06 -07:00
Xiang Li
4c609ec59c
raft: new log struct
2014-09-03 09:05:06 -07:00
Xiang Li
cb7b75c15f
raft: remove unused function maybeAppend
...
Signed-off-by: Blake Mizerany <blake.mizerany@gmail.com>
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
ab79550693
raft: use becomeFollower in cadidate state
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
8ddcd9799d
raft: go fmt
2014-09-03 09:05:05 -07:00
Blake Mizerany
6e0a668455
raft: add Node.Next
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