Commit a5f3ab69 authored by Willem Thiart's avatar Willem Thiart
Browse files

Allow NULL node for recv requestvote

parent cec2bb99
...@@ -167,9 +167,6 @@ int raft_recv_appendentries_response(raft_server_t* me_, ...@@ -167,9 +167,6 @@ int raft_recv_appendentries_response(raft_server_t* me_,
{ {
raft_server_private_t* me = (raft_server_private_t*)me_; raft_server_private_t* me = (raft_server_private_t*)me_;
assert(node);
assert(node != me->node);
__log(me_, node, __log(me_, node,
"received appendentries response %s ci:%d rci:%d 1stidx:%d", "received appendentries response %s ci:%d rci:%d 1stidx:%d",
r->success == 1 ? "SUCCESS" : "fail", r->success == 1 ? "SUCCESS" : "fail",
...@@ -191,6 +188,10 @@ int raft_recv_appendentries_response(raft_server_t* me_, ...@@ -191,6 +188,10 @@ int raft_recv_appendentries_response(raft_server_t* me_,
else if (me->current_term != r->term) else if (me->current_term != r->term)
return 0; return 0;
/* stop processing, this is a node we don't have in our configuration */
if (!node)
return 0;
if (0 == r->success) if (0 == r->success)
{ {
/* If AppendEntries fails because of log inconsistency: /* If AppendEntries fails because of log inconsistency:
...@@ -280,8 +281,6 @@ int raft_recv_appendentries( ...@@ -280,8 +281,6 @@ int raft_recv_appendentries(
ae->prev_log_term, ae->prev_log_term,
ae->n_entries); ae->n_entries);
printf("recv ae %p %p\n", node, raft_get_current_leader_node(me_));
r->term = me->current_term; r->term = me->current_term;
if (raft_is_candidate(me_) && me->current_term == ae->term) if (raft_is_candidate(me_) && me->current_term == ae->term)
...@@ -468,9 +467,6 @@ int raft_recv_requestvote_response(raft_server_t* me_, ...@@ -468,9 +467,6 @@ int raft_recv_requestvote_response(raft_server_t* me_,
{ {
raft_server_private_t* me = (raft_server_private_t*)me_; raft_server_private_t* me = (raft_server_private_t*)me_;
assert(node);
assert(node != me->node);
__log(me_, node, "node responded to requestvote status: %s", __log(me_, node, "node responded to requestvote status: %s",
r->vote_granted == 1 ? "granted" : "not granted"); r->vote_granted == 1 ? "granted" : "not granted");
...@@ -498,7 +494,8 @@ int raft_recv_requestvote_response(raft_server_t* me_, ...@@ -498,7 +494,8 @@ int raft_recv_requestvote_response(raft_server_t* me_,
if (1 == r->vote_granted) if (1 == r->vote_granted)
{ {
raft_node_vote_for_me(node, 1); if (node)
raft_node_vote_for_me(node, 1);
int votes = raft_get_nvotes_for_me(me_); int votes = raft_get_nvotes_for_me(me_);
if (raft_votes_is_majority(me->num_nodes, votes)) if (raft_votes_is_majority(me->num_nodes, votes))
raft_become_leader(me_); raft_become_leader(me_);
......
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