Commit Graph

271 Commits (8907b146d449a5edd680d6388d7af409be5cd2c9)

Author SHA1 Message Date
Xiang Li 21d116d3e1 raft: fix heartbeat 2014-09-15 09:58:22 -07:00
Xiang Li e7ea6a374a main: check node id is not noneid 2014-09-14 23:28:11 -07:00
Yicheng Qin 2927cc6e3b raft: refine plus assignment 2014-09-14 22:07:32 -07:00
Yicheng Qin 30289dad5c raft: more descriptive panic info 2014-09-12 11:39:53 -07:00
Yicheng Qin dc1357afa9 raft: use raft helper function in testing 2014-09-11 19:26:29 -07:00
Yicheng Qin 0e0fc2bd24 raft: use [1,n] as address list for raft state machines 2014-09-11 19:23:05 -07:00
Yicheng Qin 84c2bd0b7d raft: set From of local message to be local id 2014-09-11 19:18:47 -07:00
Yicheng Qin 4e31bb308d raft: use const firstId to track ids 2014-09-09 19:07:20 -07:00
Yicheng Qin b50f96e2e1 raft: set none to be 0 2014-09-09 16:47:21 -07:00
Jonathan Boulle 9997c9488a *: fix a few small issues identified by go vet 2014-09-08 23:52:36 -07:00
Xiang Li 8dfa490e49 raft: fix ignore term 2014-09-04 14:33:51 -07:00
Blake Mizerany 8d9b7b1680 raft: remove entry type 2014-09-03 15:24:47 -07:00
Blake Mizerany 8463421448 raft: remove configuration 2014-09-03 15:23:05 -07:00
Xiang Li 3c77693881 raft: make tick send out messages. all state machine actions should be taken inside step function. 2014-09-03 10:17:09 -07:00
Blake Mizerany d218034630 boom 2014-09-03 09:20:20 -07:00
Blake Mizerany e8e588c67b raft: move protobufs into raftpb 2014-09-03 09:20:17 -07:00
Blake Mizerany ddd219f297 many: marshal message 2014-09-03 09:20:16 -07:00
Blake Mizerany ad307c6965 raft: go fmt 2014-09-03 09:20:14 -07:00
Blake Mizerany 4aa15294a8 raft: re-remove clusterId from raft 2014-09-03 09:20:14 -07:00
Blake Mizerany 134a962222 raft: move raft2 to raft 2014-09-03 09:20:14 -07:00
Blake Mizerany 0453d09af6 raft: moved into new raft 2014-09-03 09:20:11 -07:00
Xiang Li a5df254e53 raft: add clusterId to snapshot 2014-09-03 09:20:08 -07:00
Yicheng Qin 01c40fcf50 raft: not recover from outdated snapshot 2014-09-03 09:20:02 -07:00
Yicheng Qin ba63cf666d raft: add recover 2014-09-03 09:20:02 -07:00
Xiang Li 6030261363 etcd/raft: add snap 2014-09-03 09:20:02 -07:00
Xiang Li 54b4f52e48 raft: add index to entry 2014-09-03 09:20:01 -07:00
Xiang Li 311db876b0 raft: add unstableState 2014-09-03 09:19:58 -07:00
Xiang Li 1288e1f39d raft: log->raftlog 2014-09-03 09:19:58 -07:00
Xiang Li 2665cc1cc8 raft: heartbeat should not contain entries 2014-09-03 09:19:57 -07:00
Yicheng Qin 79689872af raft: use From field to distinguish local message 2014-09-03 09:19:56 -07:00
Xiang Li 3921295b21 raft: update lead to none when receives vaild msgVote 2014-09-03 09:19:50 -07:00
Xiang Li 447d7dc51b raft: fix log append; add tests 2014-09-03 09:19:49 -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 2af0ad505a raft: make id int64 2014-09-03 09:05:12 -07:00
Xiang Li 5651272ec8 raft: handle snapshot message 2014-09-03 09:05:12 -07:00
Xiang Li 2a11c1487c raft: sm.compact and sm.restore 2014-09-03 09:05:12 -07:00
Yicheng Qin 62a90e77b3 raft: send Normal with nil Data when leader is elected out 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
Blake Mizerany 5778c49689 raft: set term in reset 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 e5b9e22518 raft: Step returns ok 2014-09-03 09:05:11 -07:00
Xiang Li cc3a8e26c8 raft: add leader change test for configuration 2014-09-03 09:05:10 -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 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
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
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 c32d34166e raft: leader updates its own match; tries to commit after a prop 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 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 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 0cdd1b58a4 raft: rename log.commit to log.committed 2014-09-03 09:05:07 -07:00
Xiang Li 4c609ec59c raft: new log struct 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 73e3394d2d raft: reverse sort to figure out the ci 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