From 27403b3c97b6ff5ec7ddfeeee6d6497409e366e7 Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" Date: Mon, 11 Jun 2018 16:39:55 +0200 Subject: [PATCH] Fix random election timeout rounds (srand(0) == srand(1) for glibc) --- src/raft/RaftManager.cc | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/raft/RaftManager.cc b/src/raft/RaftManager.cc index 28cab7b9fd..f26057f62b 100644 --- a/src/raft/RaftManager.cc +++ b/src/raft/RaftManager.cc @@ -1040,11 +1040,16 @@ void RaftManager::request_vote() logdb->update_raft_state(raft_state_xml); - srand(_server_id); + srand(_server_id+1); - ms = rand() % 500 + election_timeout.tv_sec * 1000 + ms = rand() % 1000 + election_timeout.tv_sec * 1000 + election_timeout.tv_nsec / 1000000; + oss.str(""); + + oss << "No leader found, starting new election in " << ms << "ms"; + NebulaLog::log("RCM", Log::INFO, oss); + set_timeout(ms, etimeout); nanosleep(&etimeout, 0);