Commit Graph

177 Commits (29d7a2a5589bf8120ca6a17d5d74aaa0e76d1644)

Author SHA1 Message Date
Blake Mizerany 021e231476 raft: ReadState -> Ready, which returns a chan 2014-09-03 09:20:15 -07:00
Blake Mizerany edac2e909b etcdserver: wip 2014-09-03 09:20:14 -07:00
Blake Mizerany 91b62c0fbf raft: messages -> byMsgType 2014-09-03 09:20:14 -07:00
Blake Mizerany 7486d3d4c5 raft: mention error in doc 2014-09-03 09:20:14 -07:00
Blake Mizerany 481e229ad4 raft: unblock progress by deproitizing proposals in Step 2014-09-03 09:20:14 -07:00
Blake Mizerany f87a6f3c1f raft: sift proposals from other message types in Step 2014-09-03 09:20:14 -07:00
Blake Mizerany 134a962222 raft: move raft2 to raft 2014-09-03 09:20:14 -07:00
Xiang Li 5fdc124578 etcd: clean up snap 2014-09-03 09:20:10 -07:00
Yicheng Qin a28dc4559b raft/etcd: recover node 2014-09-03 09:20:10 -07:00
Xiang Li 63489b9ef5 etcd: snap and wal init 2014-09-03 09:20:10 -07:00
Blake Mizerany c19932c9ba raft: prune unnecessary logging - fixes #15 2014-09-03 09:20:04 -07:00
Xiang Li 8e06333d45 raft: make State a protobuf type 2014-09-03 09:20:03 -07:00
Xiang Li d6c3ebb1a0 raft: make Info a protobuf type 2014-09-03 09:20:03 -07:00
Yicheng Qin 431ff3cce1 raft: minor change on code 2014-09-03 09:20:02 -07:00
Yicheng Qin 15029381e1 raft: fix promotable 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
Yicheng Qin 88e5bce63d wip: wal glue 2014-09-03 09:19:59 -07:00
Xiang Li b383cd5acf raft: refactor recover 2014-09-03 09:19:59 -07:00
Yicheng Qin 2bd74bc328 raft: add Load 2014-09-03 09:19:59 -07:00
Yicheng Qin e850c644da raft: return offset for unstableEnts 2014-09-03 09:19:58 -07:00
Xiang Li 311db876b0 raft: add unstableState 2014-09-03 09:19:58 -07:00
Xiang Li 609e13a240 raft: add node.Unstable
Be able to return all unstable log entries. Application must store unstable
log entries before send out any messages after calling step.
2014-09-03 09:19:58 -07:00
Xiang Li 1288e1f39d raft: log->raftlog 2014-09-03 09:19:58 -07:00
Xiang Li 13ec81c87f raft: fix panic in putVarint; varint can take up to 10 bytes for a 64bit integer. 2014-09-03 09:19:56 -07:00
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
Blake Mizerany 50e0db4038 raft: attempt first version of Interface 2014-09-03 09:05:05 -07:00