couchdb:raft_storemodule

Last commit made on 2022-10-17
Get this branch:
git clone -b raft_storemodule https://git.launchpad.net/couchdb

Branch merges

Branch information

Name:
raft_storemodule
Repository:
lp:couchdb

Recent commits

fa70138... by Robert Newson <email address hidden>

Clarify logging around elections and introduce depose/1 for testing

e2aeb6c... by Robert Newson <email address hidden>

eliminate spurious election

(We start an election when we get a new_election timeout)

1268bb0... by Robert Newson <email address hidden>

HACK: demonstrate the shards running elections in a very hackish way

f9dd598... by Robert Newson <email address hidden>

include raft name and node in log lines

76c0f0d... by Robert Newson <email address hidden>

use global so raft member names don't have to be atoms (we'll run out)

8267411... by Robert Newson <email address hidden>

don't perform MPrevLogIndex lookup before MPrevLogIndex =< LastIndex check

This caused a slow follower to crash as MPrevLogIndex would not exist in
its log

ad6a94f... by Robert Newson <email address hidden>

separate follower and candidate timeouts

From;

ARC: Analysis of Raft Consensus - 4.2

"As the authors use the same timer range for candidates and followers,
in Figure 4.1 we are waiting a minimum of 150ms (and up to twice that)
before restarting an election, despite the fact that, on average, a
node receives all of its responses within 15ms"

We separate the timeouts and set the candidate timeout smaller than
the follower timeout. In a contested election (where multiple
candidates each gain a minority of votes) we should elect a leader
faster than otherwise.

9e0e337... by Robert Newson <email address hidden>

clear votesGranted when unused for readability

eeead2a... by Robert Newson <email address hidden>

don't track matchIndex/nextIndex in non-leaders, pointless

db0ab57... by Robert Newson <email address hidden>

introduce store abstraction (WIP)