Xiang Li
9f315ffe10
raft: make entry type public
2014-09-03 09:05:11 -07:00
Xiang Li
584186c7ff
add HasLeader function
2014-09-03 09:05:11 -07:00
Blake Mizerany
dd94d5d4e8
raft: move tick comments into cases
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
8344303b1a
raft: addr -> id
2014-09-03 09:05:11 -07:00
Blake Mizerany
cb2095cddc
raft: fix typo
2014-09-03 09:05:10 -07:00
Xiang Li
cc3a8e26c8
raft: add leader change test for configuration
2014-09-03 09:05:10 -07:00
Blake Mizerany
3a85d97fd9
raft: group Node fields
2014-09-03 09:05:10 -07:00
Xiang Li
6e95448ad7
raft: correct comment for n.Next
2014-09-03 09:05:10 -07:00
Xiang Li
7e27d588ff
raft: return all the appliable entries
2014-09-03 09:05:10 -07:00
Blake Mizerany
f8a3ac9338
raft: make Msgs one line
2014-09-03 09:05:10 -07:00
Blake Mizerany
d12b2c39dd
raft: blake is OCD
2014-09-03 09:05:10 -07:00
Blake Mizerany
78bbb37018
raft: Config -> config
2014-09-03 09:05:10 -07:00
Blake Mizerany
fb1ca245a7
raft: remove unused ClusterId
2014-09-03 09:05:10 -07:00
Blake Mizerany
8c12d6d00f
raft: refactor Node.Add/Remove
2014-09-03 09:05:10 -07:00
Blake Mizerany
96059a496a
raft: replace Node.id
2014-09-03 09:05:10 -07:00
Blake Mizerany
abd2448931
raft: addr -> id
2014-09-03 09:05:10 -07:00
Blake Mizerany
c24b6b4150
raft: init stateMachine in New
2014-09-03 09:05:10 -07:00
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
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
c7e358922b
raft: add elaspe reset test
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
Xiang Li
28f87c2a43
raft: use sm.maybeCommit; should not call log.maybeCommit directly
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
Yicheng Qin
a9c81088f8
raft: add new diff
...
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
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
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