Commit Graph

131 Commits

Author SHA1 Message Date
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