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
077e09bd
Commit
077e09bd
authored
Jan 25, 2016
by
Willem Thiart
Browse files
raft_add_node makes non-voting node voting
parent
bc65dc49
Changes
2
Show whitespace changes
Inline
Side-by-side
src/raft_server.c
View file @
077e09bd
...
@@ -666,10 +666,13 @@ raft_node_t* raft_add_node(raft_server_t* me_, void* udata, int id, int is_self)
...
@@ -666,10 +666,13 @@ raft_node_t* raft_add_node(raft_server_t* me_, void* udata, int id, int is_self)
{
{
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
/* TODO: does not yet support dynamic membership changes */
/* set to voting if node already exists */
if
(
me
->
current_term
!=
0
&&
me
->
timeout_elapsed
!=
0
&&
raft_node_t
*
node
=
raft_get_node
(
me_
,
id
);
me
->
election_timeout
!=
0
)
if
(
node
)
return
NULL
;
{
raft_node_set_voting
(
node
,
1
);
return
node
;
}
me
->
num_nodes
++
;
me
->
num_nodes
++
;
me
->
nodes
=
(
raft_node_t
*
)
realloc
(
me
->
nodes
,
sizeof
(
raft_node_t
*
)
*
me
->
num_nodes
);
me
->
nodes
=
(
raft_node_t
*
)
realloc
(
me
->
nodes
,
sizeof
(
raft_node_t
*
)
*
me
->
num_nodes
);
...
...
tests/test_server.c
View file @
077e09bd
...
@@ -61,6 +61,17 @@ void TestRaft_server_voting_results_in_voting(CuTest * tc)
...
@@ -61,6 +61,17 @@ void TestRaft_server_voting_results_in_voting(CuTest * tc)
CuAssertTrue(tc, 9 == raft_get_voted_for(r));
CuAssertTrue(tc, 9 == raft_get_voted_for(r));
}
}
void TestRaft_server_add_node_makes_non_voting_node_voting(CuTest * tc)
{
void *r = raft_new();
void* n1 = raft_add_non_voting_node(r, NULL, 9, 0);
CuAssertTrue(tc, !raft_node_is_voting(n1));
raft_add_node(r, NULL, 9, 0);
CuAssertTrue(tc, raft_node_is_voting(n1));
CuAssertIntEquals(tc, 1, raft_get_num_nodes(r));
}
void TestRaft_server_remove_node(CuTest * tc)
void TestRaft_server_remove_node(CuTest * tc)
{
{
void *r = raft_new();
void *r = raft_new();
...
...
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