Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
RedisLabs Raft
Commits
e60bd380
Commit
e60bd380
authored
Nov 10, 2015
by
Willem Thiart
Browse files
Fix leader stepping down erroneously
parent
41282a13
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/raft_server.c
View file @
e60bd380
...
...
@@ -352,14 +352,13 @@ int raft_recv_requestvote(raft_server_t* me_, int node, msg_requestvote_t* vr,
raft_vote
(
me_
,
node
);
r
->
vote_granted
=
1
;
/* there must be in an election. */
me
->
current_leader
=
-
1
;
}
else
r
->
vote_granted
=
0
;
/* voted for someone, therefore must be in an election. */
if
(
0
<=
me
->
voted_for
)
me
->
current_leader
=
-
1
;
__log
(
me_
,
"node requested vote: %d replying: %s"
,
node
,
r
->
vote_granted
==
1
?
"granted"
:
"not granted"
);
...
...
tests/test_server.c
View file @
e60bd380
...
...
@@ -458,6 +458,28 @@ void TestRaft_server_recv_requestvote_reply_false_if_term_less_than_current_term
CuAssertTrue
(
tc
,
0
==
rvr
.
vote_granted
);
}
void
TestRaft_leader_recv_requestvote_does_not_step_down
(
CuTest
*
tc
)
{
msg_requestvote_response_t
rvr
;
void
*
r
=
raft_new
();
raft_add_node
(
r
,
(
void
*
)
1
,
1
);
raft_add_node
(
r
,
(
void
*
)
2
,
0
);
raft_set_current_term
(
r
,
1
);
raft_vote
(
r
,
0
);
raft_become_leader
(
r
);
CuAssertIntEquals
(
tc
,
1
,
raft_is_leader
(
r
));
/* term is less than current term */
msg_requestvote_t
rv
;
memset
(
&
rv
,
0
,
sizeof
(
msg_requestvote_t
));
rv
.
term
=
1
;
raft_recv_requestvote
(
r
,
1
,
&
rv
,
&
rvr
);
CuAssertIntEquals
(
tc
,
0
,
raft_get_current_leader
(
r
));
}
/* Reply true if term >= currentTerm (5.1) */
void
TestRaft_server_recv_requestvote_reply_true_if_term_greater_than_or_equal_to_current_term
(
CuTest
*
tc
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment