When a leader handles install_snapshot reply, the next_index for the follower should be log_start instead of log_end, because there can be new entries added in leader's log after initiating the install_snapshot procedure. Also, it should send all the accumulated entries to follower in the following append-request message, instead of sending 0 entries, to speed up the converge.
Without this fix, there is no functional problem, but it takes uncessary extra rounds of append-requests responsed with "inconsistency" by follower, although finally will be converged. Signed-off-by: Han Zhou <hz...@ovn.org> --- ovsdb/raft.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ovsdb/raft.c b/ovsdb/raft.c index c5c1d49..1612734 100644 --- a/ovsdb/raft.c +++ b/ovsdb/raft.c @@ -3997,8 +3997,9 @@ raft_handle_install_snapshot_reply( VLOG_INFO_RL(&rl, "cluster "CID_FMT": installed snapshot on server %s " " up to %"PRIu64":%"PRIu64, CID_ARGS(&raft->cid), s->nickname, rpy->last_term, rpy->last_index); - s->next_index = raft->log_end; - raft_send_append_request(raft, s, 0, "snapshot installed"); + s->next_index = raft->log_start; + raft_send_append_request(raft, s, raft->log_end - s->next_index, + "snapshot installed"); } /* Returns true if 'raft' has grown enough since the last snapshot that -- 2.1.0 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev