Commit Graph

51 Commits (bb328d5aa57a24dc72517364777d75aaee6dd475)

Author SHA1 Message Date
Xiang Li 060de128a7 raft: add clusterId 2014-09-03 09:19:56 -07:00
Yicheng Qin 79689872af raft: use From field to distinguish local message 2014-09-03 09:19:56 -07:00
Xiang Li 2e86cf2dc8 raft: add more randomness 2014-09-03 09:19:50 -07:00
Xiang Li 9c8aff66a1 raft: randomize election timeout 2014-09-03 09:19:50 -07:00
Yicheng Qin 5fc5681cb4 server: make removal go through run loop
It should not send to raft endpoint directly.
2014-09-03 09:19:50 -07:00
Yicheng Qin f1853b4364 raft: add msgDenial to deny removed nodes 2014-09-03 09:19:49 -07:00
Xiang Li 2ff3ce74c5 raft: add sm.Index 2014-09-03 09:05:14 -07:00
Xiang Li 0886e0ddf4 raft: change term to atomicInt 2014-09-03 09:05:14 -07:00
Xiang Li 30f4d9faea raft: change index and term to int64 2014-09-03 09:05:14 -07:00
Xiang Li e11c7f35b4 raft: add atomicInt 2014-09-03 09:05:14 -07:00
Xiang Li 3f435571d3 raft: atomic load id 2014-09-03 09:05:14 -07:00
Xiang Li c3f8eabac3 etcd: separate raft and client port 2014-09-03 09:05:13 -07:00
Xiang Li fc35324ba7 etcd: pass v2 kv api tests 2014-09-03 09:05:13 -07:00
Xiang Li 2af0ad505a raft: make id int64 2014-09-03 09:05:12 -07:00
Xiang Li 7be945f59b etcd: glue 2014-09-03 09:05:12 -07:00
Yicheng Qin 8eac28350d raft: avoid unexpected self-bootstrap state machine 2014-09-03 09:05:12 -07:00
Xiang Li e9cb510ef5 raft: node.Add needs the pubAddr field 2014-09-03 09:05:12 -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
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 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 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 4d22ff90d5 raft: refactor network simulator
Signed-off-by: Blake Mizerany <blake.mizerany@gmail.com>
2014-09-03 09:05:08 -07:00
Xiang Li 09d1575eeb raft: node.tick 2014-09-03 09:05:08 -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
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