fc35324ba7
etcd: pass v2 kv api tests
2014-09-03 09:05:13 -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
064004b899
raft: add log compact
2014-09-03 09:05:12 -07:00
6a232dfc13
raft: add offset for log
2014-09-03 09:05:12 -07:00
7be945f59b
etcd: glue
2014-09-03 09:05:12 -07:00
8eac28350d
raft: avoid unexpected self-bootstrap state machine
2014-09-03 09:05:12 -07:00
c86f484712
raft: make judge clear
2014-09-03 09:05:12 -07:00
7dc02b947d
raft: refine TestVote
2014-09-03 09:05:12 -07:00
095251f1fa
raft: Network supports discontinuous ids
2014-09-03 09:05:12 -07:00
62bdcf6f49
raft: range over sm.ins
2014-09-03 09:05:12 -07:00
e9cb510ef5
raft: node.Add needs the pubAddr field
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
584186c7ff
add HasLeader function
2014-09-03 09:05:11 -07:00
dd94d5d4e8
raft: move tick comments into cases
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
8344303b1a
raft: addr -> id
2014-09-03 09:05:11 -07:00
cb2095cddc
raft: fix typo
2014-09-03 09:05:10 -07:00
cc3a8e26c8
raft: add leader change test for configuration
2014-09-03 09:05:10 -07:00
3a85d97fd9
raft: group Node fields
2014-09-03 09:05:10 -07:00
6e95448ad7
raft: correct comment for n.Next
2014-09-03 09:05:10 -07:00
7e27d588ff
raft: return all the appliable entries
2014-09-03 09:05:10 -07:00
f8a3ac9338
raft: make Msgs one line
2014-09-03 09:05:10 -07:00
d12b2c39dd
raft: blake is OCD
2014-09-03 09:05:10 -07:00
78bbb37018
raft: Config -> config
2014-09-03 09:05:10 -07:00
fb1ca245a7
raft: remove unused ClusterId
2014-09-03 09:05:10 -07:00
8c12d6d00f
raft: refactor Node.Add/Remove
2014-09-03 09:05:10 -07:00
96059a496a
raft: replace Node.id
2014-09-03 09:05:10 -07:00
abd2448931
raft: addr -> id
2014-09-03 09:05:10 -07:00
c24b6b4150
raft: init stateMachine in New
2014-09-03 09:05:10 -07:00
7cdd148e24
raft: StartCluster -> Dictate
2014-09-03 09:05:09 -07:00
1a75beb57c
raft: add confAdd and confRemove entry type
2014-09-03 09:05:09 -07:00
b5f887f5d2
raft: add cluster test
2014-09-03 09:05:09 -07:00
5cad4e595c
raft: add create cluster of itself
2014-09-03 09:05:09 -07:00
193756fa38
raft: add remove node
2014-09-03 09:05:09 -07:00
961518c893
raft: execute log entries in node.step
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