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
13fb07e9
Commit
13fb07e9
authored
Oct 01, 2015
by
Willem Thiart
Browse files
Linting
parent
66ee7048
Changes
1
Show whitespace changes
Inline
Side-by-side
src/raft_server.c
View file @
13fb07e9
...
@@ -39,7 +39,8 @@ static void __log(raft_server_t *me_, const char *fmt, ...)
...
@@ -39,7 +39,8 @@ static void __log(raft_server_t *me_, const char *fmt, ...)
raft_server_t
*
raft_new
()
raft_server_t
*
raft_new
()
{
{
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
calloc
(
1
,
sizeof
(
raft_server_private_t
));
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
calloc
(
1
,
sizeof
(
raft_server_private_t
));
if
(
!
me
)
if
(
!
me
)
return
NULL
;
return
NULL
;
me
->
current_term
=
0
;
me
->
current_term
=
0
;
...
@@ -145,7 +146,7 @@ int raft_periodic(raft_server_t* me_, int msec_since_last_period)
...
@@ -145,7 +146,7 @@ int raft_periodic(raft_server_t* me_, int msec_since_last_period)
if
(
me
->
state
==
RAFT_STATE_LEADER
)
if
(
me
->
state
==
RAFT_STATE_LEADER
)
{
{
if
(
me
->
last_applied_idx
<
me
->
commit_idx
)
if
(
me
->
last_applied_idx
<
me
->
commit_idx
)
if
(
-
1
==
raft_apply_entry
(
me_
))
if
(
-
1
==
raft_apply_entry
(
me_
))
return
-
1
;
return
-
1
;
...
@@ -172,8 +173,10 @@ int raft_recv_appendentries_response(raft_server_t* me_,
...
@@ -172,8 +173,10 @@ int raft_recv_appendentries_response(raft_server_t* me_,
{
{
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
__log
(
me_
,
"received appendentries response node: %d %s cidx: %d 1stidx: %d"
,
__log
(
me_
,
node
,
r
->
success
==
1
?
"success"
:
"fail"
,
r
->
current_idx
,
r
->
first_idx
);
"received appendentries response node: %d %s cidx: %d 1stidx: %d"
,
node
,
r
->
success
==
1
?
"success"
:
"fail"
,
r
->
current_idx
,
r
->
first_idx
);
// TODO: should force invalid leaders to stepdown
// TODO: should force invalid leaders to stepdown
...
@@ -200,12 +203,12 @@ int raft_recv_appendentries_response(raft_server_t* me_,
...
@@ -200,12 +203,12 @@ int raft_recv_appendentries_response(raft_server_t* me_,
/* Update commit idx */
/* Update commit idx */
int
votes
=
1
;
/* include me */
int
votes
=
1
;
/* include me */
int
i
;
int
point
=
r
->
current_idx
;
int
point
=
r
->
current_idx
;
for
(
i
=
0
;
i
<
me
->
num_nodes
;
i
++
)
/* Check others */
int
i
;
if
(
i
!=
me
->
nodeid
&&
raft_node_get_match_idx
(
p
)
>=
point
)
for
(
i
=
0
;
i
<
me
->
num_nodes
;
i
++
)
/* Check others */
if
(
i
!=
me
->
nodeid
&&
point
<=
raft_node_get_match_idx
(
p
))
votes
++
;
votes
++
;
if
(
votes
>
me
->
num_nodes
/
2
&&
raft_get_commit_idx
(
me_
)
<
point
)
if
(
me
->
num_nodes
/
2
<
votes
&&
raft_get_commit_idx
(
me_
)
<
point
)
raft_set_commit_idx
(
me_
,
point
);
raft_set_commit_idx
(
me_
,
point
);
/* raft periodic applies committed entries lazily */
/* raft periodic applies committed entries lazily */
...
@@ -552,7 +555,8 @@ void raft_set_configuration(raft_server_t* me_,
...
@@ -552,7 +555,8 @@ void raft_set_configuration(raft_server_t* me_,
for
(
num_nodes
=
0
;
nodes
->
udata_address
;
nodes
++
)
for
(
num_nodes
=
0
;
nodes
->
udata_address
;
nodes
++
)
{
{
num_nodes
++
;
num_nodes
++
;
me
->
nodes
=
(
raft_node_t
*
)
realloc
(
me
->
nodes
,
sizeof
(
raft_node_t
*
)
*
num_nodes
);
me
->
nodes
=
(
raft_node_t
*
)
realloc
(
me
->
nodes
,
sizeof
(
raft_node_t
*
)
*
num_nodes
);
me
->
num_nodes
=
num_nodes
;
me
->
num_nodes
=
num_nodes
;
me
->
nodes
[
num_nodes
-
1
]
=
raft_node_new
(
nodes
->
udata_address
);
me
->
nodes
[
num_nodes
-
1
]
=
raft_node_new
(
nodes
->
udata_address
);
}
}
...
@@ -565,13 +569,16 @@ int raft_add_node(raft_server_t* me_, void* udata, int is_self)
...
@@ -565,13 +569,16 @@ int raft_add_node(raft_server_t* me_, void* udata, int is_self)
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
/* TODO: does not yet support dynamic membership changes */
/* TODO: does not yet support dynamic membership changes */
if
(
me
->
current_term
!=
0
&&
me
->
timeout_elapsed
!=
0
&&
me
->
election_timeout
!=
0
)
if
(
me
->
current_term
!=
0
&&
me
->
timeout_elapsed
!=
0
&&
me
->
election_timeout
!=
0
)
return
-
1
;
return
-
1
;
me
->
num_nodes
++
;
me
->
num_nodes
++
;
me
->
nodes
=
(
raft_node_t
*
)
realloc
(
me
->
nodes
,
sizeof
(
raft_node_t
*
)
*
me
->
num_nodes
);
me
->
nodes
=
(
raft_node_t
*
)
realloc
(
me
->
nodes
,
sizeof
(
raft_node_t
*
)
*
me
->
num_nodes
);
me
->
nodes
[
me
->
num_nodes
-
1
]
=
raft_node_new
(
udata
);
me
->
nodes
[
me
->
num_nodes
-
1
]
=
raft_node_new
(
udata
);
me
->
votes_for_me
=
(
int
*
)
realloc
(
me
->
votes_for_me
,
me
->
num_nodes
*
sizeof
(
int
));
me
->
votes_for_me
=
(
int
*
)
realloc
(
me
->
votes_for_me
,
me
->
num_nodes
*
sizeof
(
int
));
me
->
votes_for_me
[
me
->
num_nodes
-
1
]
=
0
;
me
->
votes_for_me
[
me
->
num_nodes
-
1
]
=
0
;
if
(
is_self
)
if
(
is_self
)
me
->
nodeid
=
me
->
num_nodes
-
1
;
me
->
nodeid
=
me
->
num_nodes
-
1
;
...
...
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