Commit Graph

11 Commits (193756fa3873314358cb31e4e346d3e245c1f4bb)

Author SHA1 Message Date
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 0cdd1b58a4 raft: rename log.commit to log.committed 2014-09-03 09:05:07 -07:00
Xiang Li 9cd3b2153f raft: comment log.nextEnts 2014-09-03 09:05:07 -07:00
Xiang Li a06729a96a raft: use log.lastIndex() 2014-09-03 09:05:07 -07:00
Xiang Li 888ddacd3c raft: remove the init cap of log entries 2014-09-03 09:05:06 -07:00
Xiang Li 2ef9498d6f raft: remove TLA comment 2014-09-03 09:05:06 -07:00
Xiang Li bee9d8bea5 raft: add log.maybeAppend 2014-09-03 09:05:06 -07:00
Xiang Li b70be19653 raft: add log.maybeCommit 2014-09-03 09:05:06 -07:00
Xiang Li 092461d7c8 raft: rename log.len to log.lastIndex 2014-09-03 09:05:06 -07:00
Xiang Li 8f3d109c18 raft: rename log.isOk to log.matchTerm 2014-09-03 09:05:06 -07:00
Xiang Li 4c609ec59c raft: new log struct 2014-09-03 09:05:06 -07:00