01c40fcf50
raft: not recover from outdated snapshot
2014-09-03 09:20:02 -07:00
ba63cf666d
raft: add recover
2014-09-03 09:20:02 -07:00
6030261363
etcd/raft: add snap
2014-09-03 09:20:02 -07:00
611d564865
raft: remove unused prevTerm field
2014-09-03 09:20:01 -07:00
54b4f52e48
raft: add index to entry
2014-09-03 09:20:01 -07:00
88e5bce63d
wip: wal glue
2014-09-03 09:19:59 -07:00
b383cd5acf
raft: refactor recover
2014-09-03 09:19:59 -07:00
2bd74bc328
raft: add Load
2014-09-03 09:19:59 -07:00
311db876b0
raft: add unstableState
2014-09-03 09:19:58 -07:00
1288e1f39d
raft: log->raftlog
2014-09-03 09:19:58 -07:00
c7d1beaaa5
raft: add first level logging
...
We log the message to step and the state of the statemachine before and after
stepping the message.
2014-09-03 09:19:58 -07:00
2665cc1cc8
raft: heartbeat should not contain entries
2014-09-03 09:19:57 -07:00
060de128a7
raft: add clusterId
2014-09-03 09:19:56 -07:00
9793c518ab
raft: forbid to use none as id
2014-09-03 09:19:56 -07:00
bea28933d3
raft: init lead to none
2014-09-03 09:19:52 -07:00
3921295b21
raft: update lead to none when receives vaild msgVote
2014-09-03 09:19:50 -07:00
f1853b4364
raft: add msgDenial to deny removed nodes
2014-09-03 09:19:49 -07:00
690edb2c56
raft: update lead for follower sm when receiving msgApp
...
Or follower may take `none` as its leader forever if it just launched
a failed election whose term is the same as the current leader.
2014-09-03 09:19:49 -07:00
2ff3ce74c5
raft: add sm.Index
2014-09-03 09:05:14 -07:00
0886e0ddf4
raft: change term to atomicInt
2014-09-03 09:05:14 -07:00
30f4d9faea
raft: change index and term to int64
2014-09-03 09:05:14 -07:00
e11c7f35b4
raft: add atomicInt
2014-09-03 09:05:14 -07:00
2af0ad505a
raft: make id int64
2014-09-03 09:05:12 -07:00
5651272ec8
raft: handle snapshot message
2014-09-03 09:05:12 -07:00
2a11c1487c
raft: sm.compact and sm.restore
2014-09-03 09:05:12 -07:00
62a90e77b3
raft: send Normal with nil Data when leader is elected out
2014-09-03 09:05:12 -07:00
8eac28350d
raft: avoid unexpected self-bootstrap state machine
2014-09-03 09:05:12 -07:00
62bdcf6f49
raft: range over sm.ins
2014-09-03 09:05:12 -07:00
5778c49689
raft: set term in reset
2014-09-03 09:05:11 -07:00
67808f8db1
raft: remove vestigial canStep
2014-09-03 09:05:11 -07:00
6044b1a0d7
raft: break Step into pieces
2014-09-03 09:05:11 -07:00
f387e3e27d
raft: add Entry.isConfig
2014-09-03 09:05:11 -07:00
3817661f82
raft: rename ConfigAdd/ConfigRemove -> AddNode/RemoveNode
2014-09-03 09:05:11 -07:00
9f315ffe10
raft: make entry type public
2014-09-03 09:05:11 -07:00
15a8b46359
raft: add/remove -> addNode/removeNode
2014-09-03 09:05:11 -07:00
e5b9e22518
raft: Step returns ok
2014-09-03 09:05:11 -07:00
a10461f60d
raft: Add/Remove -> add/remove
2014-09-03 09:05:11 -07:00
abd2448931
raft: addr -> id
2014-09-03 09:05:10 -07:00
1a75beb57c
raft: add confAdd and confRemove entry type
2014-09-03 09:05:09 -07:00
989f41477d
raft: rename peer -> peers
2014-09-03 09:05:09 -07:00
8ce6b94e05
raft: add and remove
2014-09-03 09:05:09 -07:00
d293c4915c
raft: fix pendingConf
2014-09-03 09:05:09 -07:00
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
853a458a0d
raft: change ins from array to map
2014-09-03 09:05:09 -07:00
f9c299da8b
raft: return after handling msgBeat
...
It makes the workflow more clear.
2014-09-03 09:05:09 -07:00
28f87c2a43
raft: use sm.maybeCommit; should not call log.maybeCommit directly
2014-09-03 09:05:08 -07:00
c32d34166e
raft: leader updates its own match; tries to commit after a prop
2014-09-03 09:05:08 -07:00
6fa74b0e33
raft: do bcast when receiving msgBeat
2014-09-03 09:05:08 -07:00
09d1575eeb
raft: node.tick
2014-09-03 09:05:08 -07:00
eff3aadba1
raft: add full stop to every function comment
2014-09-03 09:05:08 -07:00