void RaftConsensus::onElectionTimeout() { std::cout << "Election Timeout." << std::endl; std::lock_guard<std::mutex> lock(mu_); becomeCandidate(); }
void Follower::pollLastUpdFromLeader(){ while(!to_die) { time_t timeout_to_become_candidate = leaderTimeout + MIN_TIMEOUT_TO_BECOME_CANDIDATE + rand() % (MAX_TIMEOUT_TO_BECOME_CANDIDATE - MIN_TIMEOUT_TO_BECOME_CANDIDATE); double time_passed_since_update = difftime(time(NULL), lastUpdFromLeader); if (time_passed_since_update > timeout_to_become_candidate) { return becomeCandidate(); } sleep(timeout_to_become_candidate - time_passed_since_update); } }