Commit Graph

228 Commits (023dc7cba281ed55561be21931959bf29cb4650a)

Author SHA1 Message Date
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
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
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 1170c21f89 raft: add a single candidate test 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 9cd3b2153f raft: comment log.nextEnts 2014-09-03 09:05:07 -07:00
Xiang Li a06729a96a raft: use log.lastIndex() 2014-09-03 09:05:07 -07:00
Xiang Li 888ddacd3c raft: remove the init cap of log entries 2014-09-03 09:05:06 -07:00
Xiang Li 2ef9498d6f raft: remove TLA comment 2014-09-03 09:05:06 -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 5b052e1e10 raft: prop msg type should be MsgProp 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 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
Blake Mizerany 8d7be33dd8 raft: move to raft pkg 2014-09-03 09:05:05 -07:00