Esempio n. 1
0
void RaftConsensus::onElectionTimeout() {
    std::cout << "Election Timeout." << std::endl;

    std::lock_guard<std::mutex> lock(mu_);

    becomeCandidate();
}
Esempio n. 2
0
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);
    }
}