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
9ebc6d71
Commit
9ebc6d71
authored
Nov 04, 2015
by
Willem Thiart
Browse files
Become leader if num_nodes == 1
parent
fed506d1
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/raft_server.c
View file @
9ebc6d71
...
...
@@ -144,7 +144,12 @@ int raft_periodic(raft_server_t* me_, int msec_since_last_period)
}
}
else
if
(
me
->
election_timeout
<=
me
->
timeout_elapsed
)
raft_election_start
(
me_
);
{
if
(
1
==
me
->
num_nodes
)
raft_become_leader
(
me_
);
else
raft_election_start
(
me_
);
}
if
(
me
->
last_applied_idx
<
me
->
commit_idx
)
if
(
-
1
==
raft_apply_entry
(
me_
))
...
...
tests/test_server.c
View file @
9ebc6d71
...
...
@@ -312,17 +312,16 @@ void TestRaft_server_periodic_elapses_election_timeout(CuTest * tc)
CuAssertTrue
(
tc
,
100
==
raft_get_timeout_elapsed
(
r
));
}
void
TestRaft_server_election_timeout_sets_to_zero_when_elapsed_time_greater_than_timeout
(
CuTest
*
tc
)
void
TestRaft_server_election_timeout_promotes_us_to_leader_if_there_is_only_1_node
(
CuTest
*
tc
)
{
void
*
r
=
raft_new
();
raft_add_node
(
r
,
(
void
*
)
1
,
1
);
raft_set_election_timeout
(
r
,
1000
);
/*
greater than 1000
*/
raft_periodic
(
r
,
2
00
0
);
/* less than 1000 as the timeout would be randomised */
CuAssertTrue
(
tc
,
raft_get_timeout_elapsed
(
r
)
<
1000
);
/*
clock over (ie. 1000 + 1), causing new election
*/
raft_periodic
(
r
,
1
00
1
);
CuAssertTrue
(
tc
,
1
==
raft_is_leader
(
r
)
);
}
void
TestRaft_server_cfg_sets_num_nodes
(
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