2091 Commits

Author SHA1 Message Date
Xiang Li
064004b899 raft: add log compact 2014-09-03 09:05:12 -07:00
Xiang Li
6a232dfc13 raft: add offset for log 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
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
Xiang Li
62bdcf6f49 raft: range over sm.ins 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
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
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