f03c3bce05
raft: seperate dequeuing from slicing
2014-09-03 09:20:11 -07:00
a28dc4559b
raft/etcd: recover node
2014-09-03 09:20:10 -07:00
a5df254e53
raft: add clusterId to snapshot
2014-09-03 09:20:08 -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
38ec659cd6
raft: make Entry a protobuf type
2014-09-03 09:20:01 -07:00
54b4f52e48
raft: add index to entry
2014-09-03 09:20:01 -07:00
b383cd5acf
raft: refactor recover
2014-09-03 09:19:59 -07:00
e850c644da
raft: return offset for unstableEnts
2014-09-03 09:19:58 -07:00
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
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
447d7dc51b
raft: fix log append; add tests
2014-09-03 09:19:49 -07:00
30f4d9faea
raft: change index and term to int64
2014-09-03 09:05:14 -07:00
2a11c1487c
raft: sm.compact and sm.restore
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
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
1a75beb57c
raft: add confAdd and confRemove entry type
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
0cdd1b58a4
raft: rename log.commit to log.committed
2014-09-03 09:05:07 -07:00
9cd3b2153f
raft: comment log.nextEnts
2014-09-03 09:05:07 -07:00
a06729a96a
raft: use log.lastIndex()
2014-09-03 09:05:07 -07:00
888ddacd3c
raft: remove the init cap of log entries
2014-09-03 09:05:06 -07:00
2ef9498d6f
raft: remove TLA comment
2014-09-03 09:05:06 -07:00
bee9d8bea5
raft: add log.maybeAppend
2014-09-03 09:05:06 -07:00
b70be19653
raft: add log.maybeCommit
2014-09-03 09:05:06 -07:00
092461d7c8
raft: rename log.len to log.lastIndex
2014-09-03 09:05:06 -07:00
8f3d109c18
raft: rename log.isOk to log.matchTerm
2014-09-03 09:05:06 -07:00
4c609ec59c
raft: new log struct
2014-09-03 09:05:06 -07:00