Unverified Commit 4f94a895 authored by Shaya Potter's avatar Shaya Potter Committed by GitHub
Browse files

during previous rebases, raft_reset_transfer_leader() got moved (#60)

it has to be after we notify the caller, not before, as caller needs the state to know what happened

I had it before, realized it had to be after, but in efforts of rebasing previous PR, it got moved back to before, without me realizing.  Now that integrating it into redisraft, realized the problem
parent 575335c3
...@@ -379,10 +379,11 @@ int raft_become_leader(raft_server_t* me_) ...@@ -379,10 +379,11 @@ int raft_become_leader(raft_server_t* me_)
int i; int i;
raft_log(me_, "becoming leader term:%ld", raft_get_current_term(me_)); raft_log(me_, "becoming leader term:%ld", raft_get_current_term(me_));
raft_reset_transfer_leader(me_);
if (me->cb.notify_state_event) if (me->cb.notify_state_event)
me->cb.notify_state_event(me_, raft_get_udata(me_), RAFT_STATE_LEADER); me->cb.notify_state_event(me_, raft_get_udata(me_), RAFT_STATE_LEADER);
raft_reset_transfer_leader(me_);
raft_index_t next_idx = raft_get_current_idx(me_) + 1; raft_index_t next_idx = raft_get_current_idx(me_) + 1;
if (raft_get_current_term(me_) > 1) { if (raft_get_current_term(me_) > 1) {
...@@ -452,11 +453,11 @@ int raft_become_candidate(raft_server_t* me_) ...@@ -452,11 +453,11 @@ int raft_become_candidate(raft_server_t* me_)
int i; int i;
raft_log(me_, "becoming candidate"); raft_log(me_, "becoming candidate");
raft_reset_transfer_leader(me_);
if (me->cb.notify_state_event) if (me->cb.notify_state_event)
me->cb.notify_state_event(me_, raft_get_udata(me_), RAFT_STATE_CANDIDATE); me->cb.notify_state_event(me_, raft_get_udata(me_), RAFT_STATE_CANDIDATE);
raft_reset_transfer_leader(me_);
int e = raft_set_current_term(me_, raft_get_current_term(me_) + 1); int e = raft_set_current_term(me_, raft_get_current_term(me_) + 1);
if (0 != e) if (0 != e)
return e; return e;
...@@ -486,11 +487,11 @@ void raft_become_follower(raft_server_t* me_) ...@@ -486,11 +487,11 @@ void raft_become_follower(raft_server_t* me_)
raft_server_private_t* me = (raft_server_private_t*)me_; raft_server_private_t* me = (raft_server_private_t*)me_;
raft_log(me_, "becoming follower"); raft_log(me_, "becoming follower");
raft_reset_transfer_leader(me_);
if (me->cb.notify_state_event) if (me->cb.notify_state_event)
me->cb.notify_state_event(me_, raft_get_udata(me_), RAFT_STATE_FOLLOWER); me->cb.notify_state_event(me_, raft_get_udata(me_), RAFT_STATE_FOLLOWER);
raft_reset_transfer_leader(me_);
raft_set_state(me_, RAFT_STATE_FOLLOWER); raft_set_state(me_, RAFT_STATE_FOLLOWER);
raft_randomize_election_timeout(me_); raft_randomize_election_timeout(me_);
me->timeout_elapsed = 0; me->timeout_elapsed = 0;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment