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
4834b93f
Commit
4834b93f
authored
Jul 30, 2015
by
Willem Thiart
Browse files
Added leader check for recv_entry
parent
ff4295ea
Changes
3
Show whitespace changes
Inline
Side-by-side
include/raft.h
View file @
4834b93f
...
@@ -342,7 +342,7 @@ int raft_recv_requestvote_response(raft_server_t* me, int node,
...
@@ -342,7 +342,7 @@ int raft_recv_requestvote_response(raft_server_t* me, int node,
* @param node Index of the node who sent us this message
* @param node Index of the node who sent us this message
* @param[out] r The resulting response
* @param[out] r The resulting response
* @param e The entry message
* @param e The entry message
* @return 0 on success */
* @return 0 on success
, -1 if the server is not the leader
*/
int
raft_recv_entry
(
raft_server_t
*
me
,
int
node
,
msg_entry_t
*
e
,
int
raft_recv_entry
(
raft_server_t
*
me
,
int
node
,
msg_entry_t
*
e
,
msg_entry_response_t
*
r
);
msg_entry_response_t
*
r
);
...
...
src/raft_server.c
View file @
4834b93f
...
@@ -412,6 +412,9 @@ int raft_recv_entry(raft_server_t* me_, int node, msg_entry_t* e,
...
@@ -412,6 +412,9 @@ int raft_recv_entry(raft_server_t* me_, int node, msg_entry_t* e,
raft_entry_t
ety
;
raft_entry_t
ety
;
int
res
,
i
;
int
res
,
i
;
if
(
!
raft_is_leader
(
me_
))
return
-
1
;
__log
(
me_
,
"received entry from: %d"
,
node
);
__log
(
me_
,
"received entry from: %d"
,
node
);
ety
.
term
=
me
->
current_term
;
ety
.
term
=
me
->
current_term
;
...
...
tests/test_server.c
View file @
4834b93f
...
@@ -1400,6 +1400,32 @@ void TestRaft_leader_responds_to_entry_msg_when_entry_is_committed(CuTest * tc)
...
@@ -1400,6 +1400,32 @@ void TestRaft_leader_responds_to_entry_msg_when_entry_is_committed(CuTest * tc)
CuAssertTrue(tc, 1 == cr.was_committed);
CuAssertTrue(tc, 1 == cr.was_committed);
}
}
void TestRaft_non_leader_recv_entry_msg_fails(CuTest * tc)
{
msg_entry_response_t cr;
raft_cbs_t funcs = {
.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);
raft_set_state(r, RAFT_STATE_FOLLOWER);
/* entry message */
msg_entry_t ety;
ety.id = 1;
ety.data = "entry";
ety.len = strlen("entry");
/* receive entry */
int e = raft_recv_entry(r, 1, &ety, &cr);
CuAssertTrue(tc, -1 == e);
}
/* 5.3 */
/* 5.3 */
void TestRaft_leader_sends_appendentries_with_NextIdx_when_PrevIdx_gt_NextIdx(
void TestRaft_leader_sends_appendentries_with_NextIdx_when_PrevIdx_gt_NextIdx(
CuTest * tc)
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