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
f297457a
Commit
f297457a
authored
Aug 10, 2015
by
Willem Thiart
Browse files
Fixed next_idx going below 1
parent
87896ab2
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/raft_node.c
View file @
f297457a
...
@@ -30,12 +30,6 @@ raft_node_t* raft_node_new(void* udata)
...
@@ -30,12 +30,6 @@ raft_node_t* raft_node_new(void* udata)
return
(
raft_node_t
*
)
me
;
return
(
raft_node_t
*
)
me
;
}
}
int
raft_node_is_leader
(
raft_node_t
*
me_
)
{
// TODO
return
0
;
}
int
raft_node_get_next_idx
(
raft_node_t
*
me_
)
int
raft_node_get_next_idx
(
raft_node_t
*
me_
)
{
{
raft_node_private_t
*
me
=
(
raft_node_private_t
*
)
me_
;
raft_node_private_t
*
me
=
(
raft_node_private_t
*
)
me_
;
...
@@ -45,7 +39,8 @@ int raft_node_get_next_idx(raft_node_t* me_)
...
@@ -45,7 +39,8 @@ int raft_node_get_next_idx(raft_node_t* me_)
void
raft_node_set_next_idx
(
raft_node_t
*
me_
,
int
nextIdx
)
void
raft_node_set_next_idx
(
raft_node_t
*
me_
,
int
nextIdx
)
{
{
raft_node_private_t
*
me
=
(
raft_node_private_t
*
)
me_
;
raft_node_private_t
*
me
=
(
raft_node_private_t
*
)
me_
;
me
->
next_idx
=
nextIdx
;
/* log index begins at 1 */
me
->
next_idx
=
nextIdx
<
1
?
1
:
nextIdx
;
}
}
void
*
raft_node_get_udata
(
raft_node_t
*
me_
)
void
*
raft_node_get_udata
(
raft_node_t
*
me_
)
...
...
tests/test_server.c
View file @
f297457a
...
@@ -1720,6 +1720,51 @@ TestRaft_leader_recv_appendentries_response_increase_commit_idx_when_majority_ha
...
@@ -1720,6 +1720,51 @@ TestRaft_leader_recv_appendentries_response_increase_commit_idx_when_majority_ha
CuAssertTrue
(
tc
,
2
==
raft_get_last_applied_idx
(
r
));
CuAssertTrue
(
tc
,
2
==
raft_get_last_applied_idx
(
r
));
}
}
void
TestRaft_leader_recv_appendentries_response_failure_does_not_set_node_nextid_to_0
(
CuTest
*
tc
)
{
raft_cbs_t
funcs
=
{
.
send_appendentries
=
sender_appendentries
,
.
log
=
NULL
};
void
*
sender
=
sender_new
(
NULL
);
void
*
r
=
raft_new
();
raft_add_peer
(
r
,
(
void
*
)
1
,
1
);
raft_add_peer
(
r
,
(
void
*
)
2
,
0
);
raft_set_callbacks
(
r
,
&
funcs
,
sender
);
/* I'm the leader */
raft_set_state
(
r
,
RAFT_STATE_LEADER
);
raft_set_current_term
(
r
,
1
);
raft_set_commit_idx
(
r
,
0
);
/* append entries */
raft_entry_t
ety
;
ety
.
term
=
1
;
ety
.
id
=
1
;
ety
.
data
=
"aaaa"
;
ety
.
len
=
4
;
raft_append_entry
(
r
,
&
ety
);
/* send appendentries -
* server will be waiting for response */
raft_send_appendentries
(
r
,
0
);
/* receive mock success response */
msg_appendentries_response_t
aer
;
memset
(
&
aer
,
0
,
sizeof
(
msg_appendentries_response_t
));
aer
.
term
=
1
;
aer
.
success
=
0
;
aer
.
current_idx
=
0
;
aer
.
first_idx
=
0
;
raft_node_t
*
p
=
raft_get_node
(
r
,
0
);
raft_recv_appendentries_response
(
r
,
0
,
&
aer
);
CuAssertTrue
(
tc
,
1
==
raft_node_get_next_idx
(
p
));
raft_recv_appendentries_response
(
r
,
0
,
&
aer
);
CuAssertTrue
(
tc
,
1
==
raft_node_get_next_idx
(
p
));
}
void
TestRaft_leader_recv_appendentries_response_increment_idx_of_peer
(
void
TestRaft_leader_recv_appendentries_response_increment_idx_of_peer
(
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