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
Willemt Raft
Commits
903b8eb0
Commit
903b8eb0
authored
Aug 14, 2015
by
Willem Thiart
Browse files
Added leader/candidate voting assertion
parent
a0456901
Changes
3
Hide whitespace changes
Inline
Side-by-side
include/raft.h
View file @
903b8eb0
...
...
@@ -441,4 +441,8 @@ void raft_vote(raft_server_t* me_, const int node);
* @param term The new current term */
void
raft_set_current_term
(
raft_server_t
*
me_
,
const
int
term
);
/**
* @return this server's node ID */
int
raft_get_my_id
(
raft_server_t
*
me_
);
#endif
/* RAFT_H_ */
src/raft_server.c
View file @
903b8eb0
...
...
@@ -353,11 +353,12 @@ int raft_recv_requestvote(raft_server_t* me_, int node, msg_requestvote_t* vr,
{
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
if
(
raft_get_current_term
(
me_
)
<
vr
->
term
)
me
->
voted_for
=
-
1
;
if
(
__should_grant_vote
(
me
,
vr
))
{
/* It shouldn't be possible for a leader or candidate to grant a vote
* Both states would have voted for themselves */
assert
(
!
(
raft_is_leader
(
me_
)
||
raft_is_candidate
(
me_
)));
raft_vote
(
me_
,
node
);
r
->
vote_granted
=
1
;
}
...
...
tests/test_scenario.c
View file @
903b8eb0
...
...
@@ -36,6 +36,9 @@ void TestRaft_scenario_leader_appears(CuTest * tc)
}),
sender
[
j
]);
}
/* NOTE: important for 1st node to send vote request before others */
raft_periodic
(
r
[
0
],
1000
);
for
(
i
=
0
;
i
<
20
;
i
++
)
{
one_more_time:
...
...
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