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
94048d4a
Commit
94048d4a
authored
Nov 04, 2015
by
Willem Thiart
Browse files
Auto commit if num_nodes == 1
parent
9ebc6d71
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/raft_server.c
View file @
94048d4a
...
@@ -433,6 +433,10 @@ int raft_recv_entry(raft_server_t* me_, int node, msg_entry_t* e,
...
@@ -433,6 +433,10 @@ int raft_recv_entry(raft_server_t* me_, int node, msg_entry_t* e,
if
(
me
->
nodeid
!=
i
)
if
(
me
->
nodeid
!=
i
)
raft_send_appendentries
(
me_
,
i
);
raft_send_appendentries
(
me_
,
i
);
/* if we're the only node, we can consider the entry committed */
if
(
1
==
me
->
num_nodes
)
me
->
commit_idx
=
raft_get_current_idx
(
me_
);
r
->
id
=
e
->
id
;
r
->
id
=
e
->
id
;
r
->
idx
=
raft_get_current_idx
(
me_
);
r
->
idx
=
raft_get_current_idx
(
me_
);
r
->
term
=
me
->
current_term
;
r
->
term
=
me
->
current_term
;
...
...
tests/test_server.c
View file @
94048d4a
...
@@ -324,6 +324,27 @@ void TestRaft_server_election_timeout_promotes_us_to_leader_if_there_is_only_1_n
...
@@ -324,6 +324,27 @@ void TestRaft_server_election_timeout_promotes_us_to_leader_if_there_is_only_1_n
CuAssertTrue
(
tc
,
1
==
raft_is_leader
(
r
));
CuAssertTrue
(
tc
,
1
==
raft_is_leader
(
r
));
}
}
void
TestRaft_server_recv_entry_auto_commits_if_we_are_the_only_node
(
CuTest
*
tc
)
{
void
*
r
=
raft_new
();
raft_add_node
(
r
,
(
void
*
)
1
,
1
);
raft_set_election_timeout
(
r
,
1000
);
raft_become_leader
(
r
);
CuAssertTrue
(
tc
,
0
==
raft_get_commit_idx
(
r
));
/* entry message */
msg_entry_t
ety
;
ety
.
id
=
1
;
ety
.
data
.
buf
=
"entry"
;
ety
.
data
.
len
=
strlen
(
"entry"
);
/* receive entry */
msg_entry_response_t
cr
;
raft_recv_entry
(
r
,
1
,
&
ety
,
&
cr
);
CuAssertTrue
(
tc
,
1
==
raft_get_log_count
(
r
));
CuAssertTrue
(
tc
,
1
==
raft_get_commit_idx
(
r
));
}
void
TestRaft_server_cfg_sets_num_nodes
(
CuTest
*
tc
)
void
TestRaft_server_cfg_sets_num_nodes
(
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