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
05608a3b
Commit
05608a3b
authored
Nov 15, 2015
by
Willem Thiart
Browse files
Prevent commit_idx increasing on minority
parent
b7324a87
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/raft_server.c
View file @
05608a3b
...
...
@@ -210,7 +210,8 @@ int raft_recv_appendentries_response(raft_server_t* me_,
int
point
=
r
->
current_idx
;
int
i
;
for
(
i
=
0
;
i
<
me
->
num_nodes
;
i
++
)
/* Check others */
if
(
i
!=
me
->
nodeid
&&
point
<=
raft_node_get_match_idx
(
node
))
if
(
i
!=
me
->
nodeid
&&
point
<=
raft_node_get_match_idx
(
raft_get_node
(
me_
,
i
)))
votes
++
;
if
(
me
->
num_nodes
/
2
<
votes
&&
raft_get_commit_idx
(
me_
)
<
point
)
raft_set_commit_idx
(
me_
,
point
);
...
...
tests/test_server.c
View file @
05608a3b
...
...
@@ -1717,13 +1717,12 @@ void TestRaft_leader_recv_appendentries_response_increase_commit_idx_when_majori
aer
.
current_idx
=
1
;
aer
.
first_idx
=
1
;
raft_recv_appendentries_response
(
r
,
0
,
&
aer
);
CuAssertIntEquals
(
tc
,
0
,
raft_get_commit_idx
(
r
));
raft_recv_appendentries_response
(
r
,
1
,
&
aer
);
/* leader will now have majority followers who have appended this log */
CuAssertTrue
(
tc
,
0
!=
raft_get_commit_idx
(
r
));
CuAssertTrue
(
tc
,
2
!=
raft_get_commit_idx
(
r
));
CuAssertTrue
(
tc
,
1
==
raft_get_commit_idx
(
r
));
CuAssertIntEquals
(
tc
,
1
,
raft_get_commit_idx
(
r
));
raft_periodic
(
r
,
1
);
CuAssert
True
(
tc
,
1
==
raft_get_last_applied_idx
(
r
));
CuAssert
IntEquals
(
tc
,
1
,
raft_get_last_applied_idx
(
r
));
/* SECOND entry log application */
/* send appendentries -
...
...
@@ -1736,6 +1735,7 @@ void TestRaft_leader_recv_appendentries_response_increase_commit_idx_when_majori
aer
.
current_idx
=
2
;
aer
.
first_idx
=
2
;
raft_recv_appendentries_response
(
r
,
0
,
&
aer
);
CuAssertIntEquals
(
tc
,
1
,
raft_get_commit_idx
(
r
));
raft_recv_appendentries_response
(
r
,
1
,
&
aer
);
/* leader will now have majority followers who have appended this log */
CuAssertIntEquals
(
tc
,
2
,
raft_get_commit_idx
(
r
));
...
...
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