• Li Wei's avatar
    DAOS-279 server: Zero timeout_elapsed for leaders · 51e049fd
    Li Wei authored
    
    
    If raft_become_candidate() assigns a negative value e (i.e.,
    -election_timeout < e < 0) to timeout_elapsed, and if this replica
    successfully becomes the leader, then this leader won't send heartbeats
    for request_timeout - e milliseconds. This may be longer than
    election_timeout and cause an unnecessary leadership change.
    
    This patch zeroes timeout_elapsed in raft_become_leader(), randomizes
    election timeouts in [election_timeout, 2 * election_timeout), and fixes
    raft_recv_appendentries() to avoid zeroing timeout_elapsed if the AE
    request has an older term.
    Signed-off-by: default avatarLi Wei <wei.g.li@intel.com>
    51e049fd
raft_server.c 29.2 KB