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
9c07ad73
Commit
9c07ad73
authored
Aug 03, 2015
by
Willem Thiart
Browse files
Fixed appendentry send logic
parent
72b88b94
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/raft_server.c
View file @
9c07ad73
...
@@ -193,7 +193,7 @@ int raft_recv_appendentries_response(raft_server_t* me_,
...
@@ -193,7 +193,7 @@ int raft_recv_appendentries_response(raft_server_t* me_,
{
{
raft_entry_t
*
e
;
raft_entry_t
*
e
;
e
=
log
_get_from_idx
(
me
->
log
,
me
->
last_applied_idx
+
1
);
e
=
raft
_get_
entry_
from_idx
(
me
_
,
me
->
last_applied_idx
+
1
);
/* majority has this */
/* majority has this */
if
(
e
&&
me
->
num_nodes
/
2
<=
e
->
num_nodes
)
if
(
e
&&
me
->
num_nodes
/
2
<=
e
->
num_nodes
)
...
@@ -465,7 +465,7 @@ int raft_apply_entry(raft_server_t* me_)
...
@@ -465,7 +465,7 @@ int raft_apply_entry(raft_server_t* me_)
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
raft_entry_t
*
e
;
raft_entry_t
*
e
;
if
(
!
(
e
=
log
_get_from_idx
(
me
->
log
,
me
->
last_applied_idx
+
1
)))
if
(
!
(
e
=
raft
_get_
entry_
from_idx
(
me
_
,
me
->
last_applied_idx
+
1
)))
return
-
1
;
return
-
1
;
__log
(
me_
,
"applying log: %d"
,
me
->
last_applied_idx
);
__log
(
me_
,
"applying log: %d"
,
me
->
last_applied_idx
);
...
@@ -492,11 +492,38 @@ void raft_send_appendentries(raft_server_t* me_, int node)
...
@@ -492,11 +492,38 @@ void raft_send_appendentries(raft_server_t* me_, int node)
msg_appendentries_t
ae
;
msg_appendentries_t
ae
;
ae
.
term
=
me
->
current_term
;
ae
.
term
=
me
->
current_term
;
ae
.
leader_id
=
me
->
nodeid
;
ae
.
leader_id
=
me
->
nodeid
;
ae
.
prev_log_term
=
raft_node_get_next_idx
(
p
);
ae
.
leader_commit
=
raft_get_commit_idx
(
me_
);
ae
.
leader_commit
=
raft_get_commit_idx
(
me_
);
// TODO:
int
next_idx
=
raft_node_get_next_idx
(
p
);
//__ae_set_prev_log(me, p, &ae, next_idx);
ae
.
prev_log_idx
=
0
;
ae
.
prev_log_idx
=
0
;
ae
.
prev_log_term
=
0
;
ae
.
n_entries
=
0
;
ae
.
n_entries
=
0
;
msg_entry_t
mety
;
if
(
0
<
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
);
if
(
ety
)
{
ae
.
prev_log_idx
=
ety
->
id
;
ae
.
prev_log_term
=
ety
->
term
;
if
(
me
->
commit_idx
<
next_idx
)
{
mety
.
id
=
ety
->
id
;
mety
.
data
.
len
=
ety
->
len
;
mety
.
data
.
buf
=
ety
->
data
;
ae
.
entries
=
&
mety
;
// TODO: we want to send more than 1 at a time
ae
.
n_entries
=
1
;
}
}
}
me
->
cb
.
send_appendentries
(
me_
,
me
->
udata
,
node
,
&
ae
);
me
->
cb
.
send_appendentries
(
me_
,
me
->
udata
,
node
,
&
ae
);
}
}
...
...
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