Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ruanhaishen
RedisLabs Raft
Commits
d855e95e
Commit
d855e95e
authored
Aug 04, 2015
by
Willem Thiart
Browse files
Fixed instances where next_idx = 1
parent
3e5b1a6f
Changes
2
Show whitespace changes
Inline
Side-by-side
src/raft_server.c
View file @
d855e95e
...
...
@@ -499,7 +499,7 @@ void raft_send_appendentries(raft_server_t* me_, int node)
msg_entry_t
mety
;
if
(
0
<
next_idx
)
if
(
1
<
next_idx
)
{
/* previous log is the log just before the new logs */
raft_entry_t
*
ety
=
raft_get_entry_from_idx
(
me_
,
next_idx
-
1
);
...
...
tests/test_server.c
View file @
d855e95e
...
...
@@ -1499,7 +1499,6 @@ void TestRaft_leader_sends_appendentries_with_prevLogIdx(
/* i'm leader */
raft_set_state
(
r
,
RAFT_STATE_LEADER
);
raft_set_commit_idx
(
r
,
10
);
/* receive appendentries messages */
raft_send_appendentries
(
r
,
0
);
...
...
@@ -1530,6 +1529,43 @@ void TestRaft_leader_sends_appendentries_with_prevLogIdx(
CuAssertTrue
(
tc
,
ae
->
prev_log_idx
==
1
);
}
void
TestRaft_leader_sends_appendentries_when_peer_has_next_idx_of_0
(
CuTest
*
tc
)
{
raft_cbs_t
funcs
=
{
.
send_appendentries
=
sender_appendentries
,
.
log
=
NULL
};
void
*
sender
=
sender_new
(
NULL
);
void
*
r
=
raft_new
();
raft_set_callbacks
(
r
,
&
funcs
,
sender
);
raft_add_peer
(
r
,
(
void
*
)
1
,
1
);
raft_add_peer
(
r
,
(
void
*
)
2
,
0
);
/* i'm leader */
raft_set_state
(
r
,
RAFT_STATE_LEADER
);
/* receive appendentries messages */
raft_send_appendentries
(
r
,
0
);
msg_appendentries_t
*
ae
=
sender_poll_msg_data
(
sender
);
/* add an entry */
/* receive appendentries messages */
raft_node_t
*
n
=
raft_get_node
(
r
,
0
);
raft_node_set_next_idx
(
n
,
1
);
raft_entry_t
ety
;
ety
.
term
=
1
;
ety
.
id
=
100
;
ety
.
len
=
4
;
ety
.
data
=
(
unsigned
char
*
)
"aaa"
;
raft_append_entry
(
r
,
&
ety
);
raft_send_appendentries
(
r
,
0
);
ae
=
sender_poll_msg_data
(
sender
);
CuAssertTrue
(
tc
,
NULL
!=
ae
);
CuAssertTrue
(
tc
,
ae
->
prev_log_idx
==
0
);
}
/* 5.3 */
void
TestRaft_leader_retries_appendentries_with_decremented_NextIdx_log_inconsistency
(
...
...
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