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
2343e58b
Commit
2343e58b
authored
May 24, 2018
by
Yossi Gottlieb
Committed by
Willem Thiart
Jun 20, 2018
Browse files
Add raft_types.h and better typedefs.
parent
84ac58a4
Changes
12
Hide whitespace changes
Inline
Side-by-side
include/raft.h
View file @
2343e58b
...
...
@@ -10,6 +10,8 @@
#ifndef RAFT_H_
#define RAFT_H_
#include "raft_types.h"
typedef
enum
{
RAFT_ERR_NOT_LEADER
=-
2
,
RAFT_ERR_ONE_VOTING_CHANGE_ONLY
=-
3
,
...
...
@@ -87,10 +89,10 @@ typedef struct
typedef
struct
{
/** the entry's term at the point it was created */
unsigned
in
t
term
;
raft_term_
t
term
;
/** the entry's unique ID */
unsigned
in
t
id
;
raft_entry_id_
t
id
;
/** type of entry */
int
type
;
...
...
@@ -108,13 +110,13 @@ typedef raft_entry_t msg_entry_t;
typedef
struct
{
/** the entry's unique ID */
unsigned
in
t
id
;
raft_entry_id_
t
id
;
/** the entry's term */
in
t
term
;
raft_term_
t
term
;
/** the entry's index */
in
t
idx
;
raft_index_
t
idx
;
}
msg_entry_response_t
;
/** Vote request message.
...
...
@@ -123,16 +125,16 @@ typedef struct
typedef
struct
{
/** currentTerm, to force other leader/candidate to step down */
in
t
term
;
raft_term_
t
term
;
/** candidate requesting vote */
in
t
candidate_id
;
raft_node_id_
t
candidate_id
;
/** index of candidate's last log entry */
in
t
last_log_idx
;
raft_index_
t
last_log_idx
;
/** term of candidate's last log entry */
in
t
last_log_term
;
raft_term_
t
last_log_term
;
}
msg_requestvote_t
;
/** Vote request response message.
...
...
@@ -140,7 +142,7 @@ typedef struct
typedef
struct
{
/** currentTerm, for candidate to update itself */
in
t
term
;
raft_term_
t
term
;
/** true means candidate received vote */
int
vote_granted
;
...
...
@@ -153,19 +155,19 @@ typedef struct
typedef
struct
{
/** currentTerm, to force other leader/candidate to step down */
in
t
term
;
raft_term_
t
term
;
/** the index of the log just before the newest entry for the node who
* receives this message */
in
t
prev_log_idx
;
raft_index_
t
prev_log_idx
;
/** the term of the log just before the newest entry for the node who
* receives this message */
in
t
prev_log_term
;
raft_term_
t
prev_log_term
;
/** the index of the entry that has been appended to the majority of the
* cluster. Entries up to this index will be applied to the FSM */
in
t
leader_commit
;
raft_index_
t
leader_commit
;
/** number of entries within this message */
int
n_entries
;
...
...
@@ -180,7 +182,7 @@ typedef struct
typedef
struct
{
/** currentTerm, to force other leader/candidate to step down */
in
t
term
;
raft_term_
t
term
;
/** true if follower contained entry matching prevLogidx and prevLogTerm */
int
success
;
...
...
@@ -191,10 +193,10 @@ typedef struct
/** If success, this is the highest log IDX we've received and appended to
* our log; otherwise, this is the our currentIndex */
in
t
current_idx
;
raft_index_
t
current_idx
;
/** The first idx that we received within the appendentries message */
in
t
first_idx
;
raft_index_
t
first_idx
;
}
msg_appendentries_response_t
;
typedef
void
*
raft_server_t
;
...
...
@@ -289,7 +291,7 @@ typedef int (
)
(
raft_server_t
*
raft
,
void
*
user_data
,
in
t
vote
raft_node_id_
t
vote
);
/** Callback for saving current term (and nil vote) to disk.
...
...
@@ -305,8 +307,8 @@ typedef int (
)
(
raft_server_t
*
raft
,
void
*
user_data
,
in
t
term
,
in
t
vote
raft_term_
t
term
,
raft_node_id_
t
vote
);
/** Callback for saving log entry changes.
...
...
@@ -335,7 +337,7 @@ typedef int (
raft_server_t
*
raft
,
void
*
user_data
,
raft_entry_t
*
entry
,
in
t
entry_idx
raft_index_
t
entry_idx
);
/** Callback for being notified of membership changes.
...
...
@@ -464,7 +466,7 @@ void raft_set_callbacks(raft_server_t* me, raft_cbs_t* funcs, void* user_data);
* @return
* node if it was successfully added;
* NULL if the node already exists */
raft_node_t
*
raft_add_node
(
raft_server_t
*
me
,
void
*
user_data
,
in
t
id
,
int
is_self
);
raft_node_t
*
raft_add_node
(
raft_server_t
*
me
,
void
*
user_data
,
raft_node_id_
t
id
,
int
is_self
);
#define raft_add_peer raft_add_node
...
...
@@ -474,7 +476,7 @@ raft_node_t* raft_add_node(raft_server_t* me, void* user_data, int id, int is_se
* @return
* node if it was successfully added;
* NULL if the node already exists */
raft_node_t
*
raft_add_non_voting_node
(
raft_server_t
*
me_
,
void
*
udata
,
in
t
id
,
int
is_self
);
raft_node_t
*
raft_add_non_voting_node
(
raft_server_t
*
me_
,
void
*
udata
,
raft_node_id_
t
id
,
int
is_self
);
/** Remove node.
* @param node The node to be removed. */
...
...
@@ -610,19 +612,19 @@ int raft_get_num_voting_nodes(raft_server_t* me_);
/**
* @return number of items within log */
in
t
raft_get_log_count
(
raft_server_t
*
me
);
raft_index_
t
raft_get_log_count
(
raft_server_t
*
me
);
/**
* @return current term */
in
t
raft_get_current_term
(
raft_server_t
*
me
);
raft_term_
t
raft_get_current_term
(
raft_server_t
*
me
);
/**
* @return current log index */
in
t
raft_get_current_idx
(
raft_server_t
*
me
);
raft_index_
t
raft_get_current_idx
(
raft_server_t
*
me
);
/**
* @return commit index */
in
t
raft_get_commit_idx
(
raft_server_t
*
me_
);
raft_index_
t
raft_get_commit_idx
(
raft_server_t
*
me_
);
/**
* @return 1 if follower; 0 otherwise */
...
...
@@ -646,15 +648,15 @@ int raft_get_request_timeout(raft_server_t* me);
/**
* @return index of last applied entry */
in
t
raft_get_last_applied_idx
(
raft_server_t
*
me
);
raft_index_
t
raft_get_last_applied_idx
(
raft_server_t
*
me
);
/**
* @return the node's next index */
in
t
raft_node_get_next_idx
(
raft_node_t
*
node
);
raft_index_
t
raft_node_get_next_idx
(
raft_node_t
*
node
);
/**
* @return this node's user data */
in
t
raft_node_get_match_idx
(
raft_node_t
*
me
);
raft_index_
t
raft_node_get_match_idx
(
raft_node_t
*
me
);
/**
* @return this node's user data */
...
...
@@ -667,18 +669,18 @@ void raft_node_set_udata(raft_node_t* me, void* user_data);
/**
* @param[in] idx The entry's index
* @return entry from index */
raft_entry_t
*
raft_get_entry_from_idx
(
raft_server_t
*
me
,
in
t
idx
);
raft_entry_t
*
raft_get_entry_from_idx
(
raft_server_t
*
me
,
raft_index_
t
idx
);
/**
* @param[in] node The node's ID
* @return node pointed to by node ID */
raft_node_t
*
raft_get_node
(
raft_server_t
*
me_
,
const
in
t
id
);
raft_node_t
*
raft_get_node
(
raft_server_t
*
me_
,
const
raft_node_id_
t
id
);
/**
* Used for iterating through nodes
* @param[in] node The node's idx
* @return node pointed to by node idx */
raft_node_t
*
raft_get_node_from_idx
(
raft_server_t
*
me_
,
const
in
t
idx
);
raft_node_t
*
raft_get_node_from_idx
(
raft_server_t
*
me_
,
const
raft_index_
t
idx
);
/**
* @return number of votes this server has received this election */
...
...
@@ -691,7 +693,7 @@ int raft_get_voted_for(raft_server_t* me);
/** Get what this node thinks the node ID of the leader is.
* @return node of what this node thinks is the valid leader;
* -1 if the leader is unknown */
in
t
raft_get_current_leader
(
raft_server_t
*
me
);
raft_node_id_
t
raft_get_current_leader
(
raft_server_t
*
me
);
/** Get what this node thinks the node of the leader is.
* @return node of what this node thinks is the valid leader;
...
...
@@ -714,19 +716,19 @@ int raft_vote(raft_server_t* me_, raft_node_t* node);
* @param[in] nodeid The server to vote for by nodeid
* @return
* 0 on success */
int
raft_vote_for_nodeid
(
raft_server_t
*
me_
,
const
in
t
nodeid
);
int
raft_vote_for_nodeid
(
raft_server_t
*
me_
,
const
raft_node_id_
t
nodeid
);
/** Set the current term.
* This should be used to reload persistent state, ie. the current_term field.
* @param[in] term The new current term
* @return
* 0 on success */
int
raft_set_current_term
(
raft_server_t
*
me
,
const
in
t
term
);
int
raft_set_current_term
(
raft_server_t
*
me
,
const
raft_term_
t
term
);
/** Set the commit idx.
* This should be used to reload persistent state, ie. the commit_idx field.
* @param[in] commit_idx The new commit index. */
void
raft_set_commit_idx
(
raft_server_t
*
me
,
in
t
commit_idx
);
void
raft_set_commit_idx
(
raft_server_t
*
me
,
raft_index_
t
commit_idx
);
/** Add an entry to the server's log.
* This should be used to reload persistent state, ie. the commit log.
...
...
@@ -744,7 +746,7 @@ int raft_msg_entry_response_committed(raft_server_t* me_,
/** Get node's ID.
* @return ID of node */
in
t
raft_node_get_id
(
raft_node_t
*
me_
);
raft_node_id_
t
raft_node_get_id
(
raft_node_t
*
me_
);
/** Tell if we are a leader, candidate or follower.
* @return get state of type raft_state_e. */
...
...
@@ -752,7 +754,7 @@ int raft_get_state(raft_server_t* me_);
/** Get the most recent log's term
* @return the last log term */
in
t
raft_get_last_log_term
(
raft_server_t
*
me_
);
raft_term_
t
raft_get_last_log_term
(
raft_server_t
*
me_
);
/** Turn a node into a voting node.
* Voting nodes can take part in elections and in-regards to committing entries,
...
...
@@ -821,7 +823,7 @@ int raft_end_snapshot(raft_server_t *me_);
/** Get the entry index of the entry that was snapshotted
**/
in
t
raft_get_snapshot_entry_idx
(
raft_server_t
*
me_
);
raft_index_
t
raft_get_snapshot_entry_idx
(
raft_server_t
*
me_
);
/** Check is a snapshot is in progress
**/
...
...
@@ -837,7 +839,7 @@ int raft_poll_entry(raft_server_t* me_, raft_entry_t **ety);
**/
raft_entry_t
*
raft_get_last_applied_entry
(
raft_server_t
*
me_
);
in
t
raft_get_first_entry_idx
(
raft_server_t
*
me_
);
raft_index_
t
raft_get_first_entry_idx
(
raft_server_t
*
me_
);
/** Start loading snapshot
*
...
...
@@ -856,8 +858,8 @@ int raft_get_first_entry_idx(raft_server_t* me_);
* RAFT_ERR_SNAPSHOT_ALREADY_LOADED
**/
int
raft_begin_load_snapshot
(
raft_server_t
*
me_
,
in
t
last_included_term
,
in
t
last_included_index
);
raft_term_
t
last_included_term
,
raft_index_
t
last_included_index
);
/** Stop loading snapshot.
*
...
...
@@ -867,11 +869,11 @@ int raft_begin_load_snapshot(raft_server_t *me_,
**/
int
raft_end_load_snapshot
(
raft_server_t
*
me_
);
in
t
raft_get_snapshot_last_idx
(
raft_server_t
*
me_
);
raft_index_
t
raft_get_snapshot_last_idx
(
raft_server_t
*
me_
);
in
t
raft_get_snapshot_last_term
(
raft_server_t
*
me_
);
raft_term_
t
raft_get_snapshot_last_term
(
raft_server_t
*
me_
);
void
raft_set_snapshot_metadata
(
raft_server_t
*
me_
,
int
term
,
in
t
idx
);
void
raft_set_snapshot_metadata
(
raft_server_t
*
me_
,
raft_term_t
term
,
raft_index_
t
idx
);
/** Check if a node is active.
* Active nodes could become voting nodes.
...
...
include/raft_log.h
View file @
2343e58b
#ifndef RAFT_LOG_H_
#define RAFT_LOG_H_
#include "raft_types.h"
typedef
void
*
log_t
;
log_t
*
log_new
();
log_t
*
log_new
(
void
);
log_t
*
log_alloc
(
in
t
initial_size
);
log_t
*
log_alloc
(
raft_index_
t
initial_size
);
void
log_set_callbacks
(
log_t
*
me_
,
raft_cbs_t
*
funcs
,
void
*
raft
);
...
...
@@ -22,11 +24,11 @@ int log_append_entry(log_t* me_, raft_entry_t* c);
/**
* @return number of entries held within log */
in
t
log_count
(
log_t
*
me_
);
raft_index_
t
log_count
(
log_t
*
me_
);
/**
* Delete all logs from this log onwards */
int
log_delete
(
log_t
*
me_
,
in
t
idx
);
int
log_delete
(
log_t
*
me_
,
raft_index_
t
idx
);
/**
* Empty the queue. */
...
...
@@ -39,18 +41,18 @@ int log_poll(log_t * me_, void** etyp);
/** Get an array of entries from this index onwards.
* This is used for batching.
*/
raft_entry_t
*
log_get_from_idx
(
log_t
*
me_
,
in
t
idx
,
int
*
n_etys
);
raft_entry_t
*
log_get_from_idx
(
log_t
*
me_
,
raft_index_
t
idx
,
int
*
n_etys
);
raft_entry_t
*
log_get_at_idx
(
log_t
*
me_
,
in
t
idx
);
raft_entry_t
*
log_get_at_idx
(
log_t
*
me_
,
raft_index_
t
idx
);
/**
* @return youngest entry */
raft_entry_t
*
log_peektail
(
log_t
*
me_
);
in
t
log_get_current_idx
(
log_t
*
me_
);
raft_index_
t
log_get_current_idx
(
log_t
*
me_
);
int
log_load_from_snapshot
(
log_t
*
me_
,
int
idx
,
in
t
term
);
int
log_load_from_snapshot
(
log_t
*
me_
,
raft_index_t
idx
,
raft_term_
t
term
);
in
t
log_get_base
(
log_t
*
me_
);
raft_index_
t
log_get_base
(
log_t
*
me_
);
#endif
/* RAFT_LOG_H_ */
include/raft_private.h
View file @
2343e58b
...
...
@@ -10,6 +10,8 @@
#ifndef RAFT_PRIVATE_H_
#define RAFT_PRIVATE_H_
#include "raft_types.h"
enum
{
RAFT_NODE_STATUS_DISCONNECTED
,
RAFT_NODE_STATUS_CONNECTED
,
...
...
@@ -22,11 +24,11 @@ typedef struct {
/* the server's best guess of what the current term is
* starts at zero */
in
t
current_term
;
raft_term_
t
current_term
;
/* The candidate the server voted for in its current term,
* or Nil if it hasn't voted for any. */
in
t
voted_for
;
raft_node_id_
t
voted_for
;
/* the log which is replicated */
void
*
log
;
...
...
@@ -34,10 +36,10 @@ typedef struct {
/* Volatile state: */
/* idx of highest log entry known to be committed */
in
t
commit_idx
;
raft_index_
t
commit_idx
;
/* idx of highest log entry applied to state machine */
in
t
last_applied_idx
;
raft_index_
t
last_applied_idx
;
/* follower/leader/candidate indicator */
int
state
;
...
...
@@ -64,7 +66,7 @@ typedef struct {
raft_node_t
*
node
;
/* the log which has a voting cfg change, otherwise -1 */
in
t
voting_cfg_change_log_idx
;
raft_index_
t
voting_cfg_change_log_idx
;
/* Our membership with the cluster is confirmed (ie. configuration log was
* committed) */
...
...
@@ -73,8 +75,8 @@ typedef struct {
int
snapshot_in_progress
;
/* Last compacted snapshot */
in
t
snapshot_last_idx
;
in
t
snapshot_last_term
;
raft_index_
t
snapshot_last_idx
;
raft_term_
t
snapshot_last_term
;
}
raft_server_private_t
;
int
raft_election_start
(
raft_server_t
*
me
);
...
...
@@ -102,21 +104,21 @@ int raft_apply_entry(raft_server_t* me_);
* @return 0 if unsuccessful */
int
raft_append_entry
(
raft_server_t
*
me_
,
raft_entry_t
*
c
);
void
raft_set_last_applied_idx
(
raft_server_t
*
me
,
in
t
idx
);
void
raft_set_last_applied_idx
(
raft_server_t
*
me
,
raft_index_
t
idx
);
void
raft_set_state
(
raft_server_t
*
me_
,
int
state
);
int
raft_get_state
(
raft_server_t
*
me_
);
raft_node_t
*
raft_node_new
(
void
*
udata
,
in
t
id
);
raft_node_t
*
raft_node_new
(
void
*
udata
,
raft_node_id_
t
id
);
void
raft_node_free
(
raft_node_t
*
me_
);
void
raft_node_set_next_idx
(
raft_node_t
*
node
,
in
t
nextIdx
);
void
raft_node_set_next_idx
(
raft_node_t
*
node
,
raft_index_
t
nextIdx
);
void
raft_node_set_match_idx
(
raft_node_t
*
node
,
in
t
matchIdx
);
void
raft_node_set_match_idx
(
raft_node_t
*
node
,
raft_index_
t
matchIdx
);
in
t
raft_node_get_match_idx
(
raft_node_t
*
me_
);
raft_index_
t
raft_node_get_match_idx
(
raft_node_t
*
me_
);
void
raft_node_vote_for_me
(
raft_node_t
*
me_
,
const
int
vote
);
...
...
@@ -126,11 +128,11 @@ void raft_node_set_has_sufficient_logs(raft_node_t* me_);
int
raft_votes_is_majority
(
const
int
nnodes
,
const
int
nvotes
);
void
raft_offer_log
(
raft_server_t
*
me_
,
raft_entry_t
*
ety
,
const
in
t
idx
);
void
raft_offer_log
(
raft_server_t
*
me_
,
raft_entry_t
*
ety
,
const
raft_index_
t
idx
);
void
raft_pop_log
(
raft_server_t
*
me_
,
raft_entry_t
*
ety
,
const
in
t
idx
);
void
raft_pop_log
(
raft_server_t
*
me_
,
raft_entry_t
*
ety
,
const
raft_index_
t
idx
);
in
t
raft_get_num_snapshottable_logs
(
raft_server_t
*
me_
);
raft_index_
t
raft_get_num_snapshottable_logs
(
raft_server_t
*
me_
);
int
raft_node_is_active
(
raft_node_t
*
me_
);
...
...
include/raft_types.h
0 → 100644
View file @
2343e58b
#ifndef RAFT_DEFS_H_
#define RAFT_DEFS_H_
/**
* Unique entry ids are mostly used for debugging and nothing else,
* so there is little harm if they collide.
*/
typedef
int
raft_entry_id_t
;
/**
* Monotonic term counter.
*/
typedef
long
int
raft_term_t
;
/**
* Monotonic log entry index.
*
* This is also used to as an entry count size type.
*/
typedef
long
int
raft_index_t
;
/**
* Unique node identifier.
*/
typedef
int
raft_node_id_t
;
#endif
/* RAFT_DEFS_H_ */
src/raft_log.c
View file @
2343e58b
...
...
@@ -22,16 +22,16 @@
typedef
struct
{
/* size of array */
in
t
size
;
raft_index_
t
size
;
/* the amount of elements in the array */
in
t
count
;
raft_index_
t
count
;
/* position of the queue */
in
t
front
,
back
;
raft_index_
t
front
,
back
;
/* we compact the log, and thus need to increment the Base Log Index */
in
t
base
;
raft_index_
t
base
;
raft_entry_t
*
entries
;
...
...
@@ -40,7 +40,7 @@ typedef struct
void
*
raft
;
}
log_private_t
;
static
int
mod
(
int
a
,
in
t
b
)
static
int
mod
(
raft_index_t
a
,
raft_index_
t
b
)
{
int
r
=
a
%
b
;
return
r
<
0
?
r
+
b
:
r
;
...
...
@@ -48,7 +48,7 @@ static int mod(int a, int b)
static
int
__ensurecapacity
(
log_private_t
*
me
)
{
in
t
i
,
j
;
raft_index_
t
i
,
j
;
raft_entry_t
*
temp
;
if
(
me
->
count
<
me
->
size
)
...
...
@@ -75,7 +75,7 @@ static int __ensurecapacity(log_private_t * me)
return
0
;
}
int
log_load_from_snapshot
(
log_t
*
me_
,
int
idx
,
in
t
term
)
int
log_load_from_snapshot
(
log_t
*
me_
,
raft_index_t
idx
,
raft_term_
t
term
)
{
log_private_t
*
me
=
(
log_private_t
*
)
me_
;
...
...
@@ -85,7 +85,7 @@ int log_load_from_snapshot(log_t *me_, int idx, int term)
return
0
;
}
log_t
*
log_alloc
(
in
t
initial_size
)
log_t
*
log_alloc
(
raft_index_
t
initial_size
)
{
log_private_t
*
me
=
(
log_private_t
*
)
__raft_calloc
(
1
,
sizeof
(
log_private_t
));
if
(
!
me
)
...
...
@@ -126,7 +126,7 @@ void log_clear(log_t* me_)
int
log_append_entry
(
log_t
*
me_
,
raft_entry_t
*
ety
)
{
log_private_t
*
me
=
(
log_private_t
*
)
me_
;
in
t
idx
=
me
->
base
+
me
->
count
+
1
;
raft_index_
t
idx
=
me
->
base
+
me
->
count
+
1
;
int
e
;
e
=
__ensurecapacity
(
me
);
...
...
@@ -151,10 +151,10 @@ int log_append_entry(log_t* me_, raft_entry_t* ety)
return
0
;
}
raft_entry_t
*
log_get_from_idx
(
log_t
*
me_
,
in
t
idx
,
int
*
n_etys
)
raft_entry_t
*
log_get_from_idx
(
log_t
*
me_
,
raft_index_
t
idx
,
int
*
n_etys
)
{
log_private_t
*
me
=
(
log_private_t
*
)
me_
;
in
t
i
;
raft_index_
t
i
;
assert
(
0
<=
idx
-
1
);
...
...
@@ -180,10 +180,10 @@ raft_entry_t* log_get_from_idx(log_t* me_, int idx, int *n_etys)
return
&
me
->
entries
[
i
];
}
raft_entry_t
*
log_get_at_idx
(
log_t
*
me_
,
in
t
idx
)
raft_entry_t
*
log_get_at_idx
(
log_t
*
me_
,
raft_index_
t
idx
)
{
log_private_t
*
me
=
(
log_private_t
*
)
me_
;
in
t
i
;
raft_index_
t
i
;
if
(
idx
==
0
)
return
NULL
;
...
...
@@ -198,12 +198,12 @@ raft_entry_t* log_get_at_idx(log_t* me_, int idx)
return
&
me
->
entries
[
i
];
}
in
t
log_count
(
log_t
*
me_
)
raft_index_
t
log_count
(
log_t
*
me_
)
{
return
((
log_private_t
*
)
me_
)
->
count
;
}
int
log_delete
(
log_t
*
me_
,
in
t
idx
)
int
log_delete
(
log_t
*
me_
,
raft_index_
t
idx
)
{
log_private_t
*
me
=
(
log_private_t
*
)
me_
;
...
...
@@ -215,8 +215,8 @@ int log_delete(log_t* me_, int idx)
for
(;
idx
<=
me
->
base
+
me
->
count
&&
me
->
count
;)
{
in
t
idx_tmp
=
me
->
base
+
me
->
count
;
in
t
back
=
mod
(
me
->
back
-
1
,
me
->
size
);
raft_index_
t
idx_tmp
=
me
->
base
+
me
->
count
;
raft_index_
t
back
=
mod
(
me
->
back
-
1
,
me
->
size
);
if
(
me
->
cb
&&
me
->
cb
->
log_pop
)
{
...
...
@@ -235,7 +235,7 @@ int log_delete(log_t* me_, int idx)
int
log_poll
(
log_t
*
me_
,
void
**
etyp
)
{
log_private_t
*
me
=
(
log_private_t
*
)
me_
;
in
t
idx
=
me
->
base
+
1
;
raft_index_
t
idx
=
me
->
base
+
1
;
if
(
0
==
me
->
count
)
return
-
1
;
...
...
@@ -287,13 +287,13 @@ void log_free(log_t * me_)
__raft_free
(
me
);
}
in
t
log_get_current_idx
(
log_t
*
me_
)
raft_index_
t
log_get_current_idx
(
log_t
*
me_
)
{
log_private_t
*
me
=
(
log_private_t
*
)
me_
;
return
log_count
(
me_
)
+
me
->
base
;
}
in
t
log_get_base
(
log_t
*
me_
)
raft_index_
t
log_get_base
(
log_t
*
me_
)
{
return
((
log_private_t
*
)
me_
)
->
base
;
}
src/raft_node.c
View file @
2343e58b
...
...
@@ -28,15 +28,15 @@ typedef struct
{
void
*
udata
;
in
t
next_idx
;
in
t
match_idx
;
raft_index_
t
next_idx
;
raft_index_
t
match_idx
;
int
flags
;
in
t
id
;
raft_node_id_
t
id
;
}
raft_node_private_t
;
raft_node_t
*
raft_node_new
(
void
*
udata
,
in
t
id
)
raft_node_t
*
raft_node_new
(
void
*
udata
,
raft_node_id_
t
id
)
{
raft_node_private_t
*
me
;
me
=
(
raft_node_private_t
*
)
__raft_calloc
(
1
,
sizeof
(
raft_node_private_t
));
...
...
@@ -55,26 +55,26 @@ void raft_node_free(raft_node_t* me_)
__raft_free
(
me_
);
}
in
t
raft_node_get_next_idx
(
raft_node_t
*
me_
)
raft_index_
t
raft_node_get_next_idx
(
raft_node_t
*
me_
)
{
raft_node_private_t
*
me
=
(
raft_node_private_t
*
)
me_
;
return
me
->
next_idx
;
}
void
raft_node_set_next_idx
(
raft_node_t
*
me_
,
in
t
nextIdx
)
void
raft_node_set_next_idx
(
raft_node_t
*
me_
,
raft_index_
t
nextIdx
)
{
raft_node_private_t
*
me
=
(
raft_node_private_t
*
)
me_
;
/* log index begins at 1 */
me
->
next_idx
=
nextIdx
<
1
?
1
:
nextIdx
;
}
in
t
raft_node_get_match_idx
(
raft_node_t
*
me_
)
raft_index_
t
raft_node_get_match_idx
(
raft_node_t
*
me_
)
{
raft_node_private_t
*
me
=
(
raft_node_private_t
*
)
me_
;
return
me
->
match_idx
;
}
void
raft_node_set_match_idx
(
raft_node_t
*
me_
,
in
t
matchIdx
)
void
raft_node_set_match_idx
(
raft_node_t
*
me_
,
raft_index_
t
matchIdx
)
{
raft_node_private_t
*
me
=
(
raft_node_private_t
*
)
me_
;
me
->
match_idx
=
matchIdx
;
...
...
@@ -170,7 +170,7 @@ int raft_node_is_voting_committed(raft_node_t* me_)
return
(
me
->
flags
&
RAFT_NODE_VOTING_COMMITTED
)
!=
0
;
}
in
t
raft_node_get_id
(
raft_node_t
*
me_
)
raft_node_id_
t
raft_node_get_id
(
raft_node_t
*
me_
)
{
raft_node_private_t
*
me
=
(
raft_node_private_t
*
)
me_
;
return
me
->
id
;
...
...
src/raft_server.c
View file @
2343e58b
...
...
@@ -128,7 +128,7 @@ void raft_clear(raft_server_t* me_)
log_clear
(
me
->
log
);
}
int
raft_delete_entry_from_idx
(
raft_server_t
*
me_
,
in
t
idx
)
int
raft_delete_entry_from_idx
(
raft_server_t
*
me_
,
raft_index_
t
idx
)
{
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
...
...
@@ -258,7 +258,7 @@ int raft_periodic(raft_server_t* me_, int msec_since_last_period)
return
0
;
}
raft_entry_t
*
raft_get_entry_from_idx
(
raft_server_t
*
me_
,
in
t
etyidx
)
raft_entry_t
*
raft_get_entry_from_idx
(
raft_server_t
*
me_
,
raft_index_
t
etyidx
)
{
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
return
log_get_at_idx
(
me
->
log
,
etyidx
);
...
...
@@ -302,13 +302,13 @@ int raft_recv_appendentries_response(raft_server_t* me_,
else
if
(
me
->
current_term
!=
r
->
term
)
return
0
;
in
t
match_idx
=
raft_node_get_match_idx
(
node
);
raft_index_
t
match_idx
=
raft_node_get_match_idx
(
node
);
if
(
0
==
r
->
success
)
{
/* If AppendEntries fails because of log inconsistency:
decrement nextIndex and retry (§5.3) */
in
t
next_idx
=
raft_node_get_next_idx
(
node
);
raft_index_
t
next_idx
=
raft_node_get_next_idx
(
node
);
assert
(
0
<
next_idx
);
/* Stale response -- ignore */
assert
(
match_idx
<=
next_idx
-
1
);
...
...
@@ -347,7 +347,7 @@ int raft_recv_appendentries_response(raft_server_t* me_,
raft_node_set_match_idx
(
node
,
r
->
current_idx
);
/* Update commit idx */
in
t
point
=
r
->
current_idx
;
raft_index_
t
point
=
r
->
current_idx
;
if
(
point
)
{
raft_entry_t
*
ety
=
raft_get_entry_from_idx
(
me_
,
point
);
...
...
@@ -477,7 +477,7 @@ int raft_recv_appendentries(
for
(
i
=
0
;
i
<
ae
->
n_entries
;
i
++
)
{
raft_entry_t
*
ety
=
&
ae
->
entries
[
i
];
in
t
ety_index
=
ae
->
prev_log_idx
+
1
+
i
;
raft_index_
t
ety_index
=
ae
->
prev_log_idx
+
1
+
i
;
raft_entry_t
*
existing_ety
=
raft_get_entry_from_idx
(
me_
,
ety_index
);
if
(
existing_ety
&&
existing_ety
->
term
!=
ety
->
term
)
{
...
...
@@ -513,7 +513,7 @@ int raft_recv_appendentries(
min(leaderCommit, index of most recent entry) */
if
(
raft_get_commit_idx
(
me_
)
<
ae
->
leader_commit
)
{
in
t
last_log_idx
=
max
(
raft_get_current_idx
(
me_
),
1
);
raft_index_
t
last_log_idx
=
max
(
raft_get_current_idx
(
me_
),
1
);
raft_set_commit_idx
(
me_
,
min
(
last_log_idx
,
ae
->
leader_commit
));
}
...
...
@@ -544,7 +544,7 @@ static int __should_grant_vote(raft_server_private_t* me, msg_requestvote_t* vr)
/* Below we check if log is more up-to-date... */
in
t
current_idx
=
raft_get_current_idx
((
void
*
)
me
);
raft_index_
t
current_idx
=
raft_get_current_idx
((
void
*
)
me
);
/* Our log is definitely not more up-to-date if it's empty! */
if
(
0
==
current_idx
)
...
...
@@ -756,7 +756,7 @@ int raft_recv_entry(raft_server_t* me_,
/* Only send new entries.
* Don't send the entry to peers who are behind, to prevent them from
* becoming congested. */
in
t
next_idx
=
raft_node_get_next_idx
(
node
);
raft_index_
t
next_idx
=
raft_node_get_next_idx
(
node
);
if
(
next_idx
==
raft_get_current_idx
(
me_
))
raft_send_appendentries
(
me_
,
node
);
}
...
...
@@ -817,7 +817,7 @@ int raft_apply_entry(raft_server_t* me_)
if
(
me
->
last_applied_idx
==
raft_get_commit_idx
(
me_
))
return
-
1
;
in
t
log_idx
=
me
->
last_applied_idx
+
1
;
raft_index_
t
log_idx
=
me
->
last_applied_idx
+
1
;
raft_entry_t
*
ety
=
raft_get_entry_from_idx
(
me_
,
log_idx
);
if
(
!
ety
)
...
...
@@ -841,7 +841,7 @@ int raft_apply_entry(raft_server_t* me_)
if
(
!
raft_entry_is_cfg_change
(
ety
))
return
0
;
in
t
node_id
=
me
->
cb
.
log_get_node_id
(
me_
,
raft_get_udata
(
me_
),
ety
,
log_idx
);
raft_node_id_
t
node_id
=
me
->
cb
.
log_get_node_id
(
me_
,
raft_get_udata
(
me_
),
ety
,
log_idx
);
raft_node_t
*
node
=
raft_get_node
(
me_
,
node_id
);
switch
(
ety
->
type
)
{
...
...
@@ -871,7 +871,7 @@ int raft_apply_entry(raft_server_t* me_)
return
0
;
}
raft_entry_t
*
raft_get_entries_from_idx
(
raft_server_t
*
me_
,
in
t
idx
,
int
*
n_etys
)
raft_entry_t
*
raft_get_entries_from_idx
(
raft_server_t
*
me_
,
raft_index_
t
idx
,
int
*
n_etys
)
{
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
return
log_get_from_idx
(
me
->
log
,
idx
,
n_etys
);
...
...
@@ -893,7 +893,7 @@ int raft_send_appendentries(raft_server_t* me_, raft_node_t* node)
ae
.
prev_log_idx
=
0
;
ae
.
prev_log_term
=
0
;
in
t
next_idx
=
raft_node_get_next_idx
(
node
);
raft_index_
t
next_idx
=
raft_node_get_next_idx
(
node
);
/* figure out if the client needs a snapshot sent */
if
(
0
<
me
->
snapshot_last_idx
&&
next_idx
<
me
->
snapshot_last_idx
)
...
...
@@ -953,7 +953,7 @@ int raft_send_appendentries_all(raft_server_t* me_)
return
0
;
}
raft_node_t
*
raft_add_node
(
raft_server_t
*
me_
,
void
*
udata
,
in
t
id
,
int
is_self
)
raft_node_t
*
raft_add_node
(
raft_server_t
*
me_
,
void
*
udata
,
raft_node_id_
t
id
,
int
is_self
)
{
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
...
...
@@ -993,7 +993,7 @@ raft_node_t* raft_add_node(raft_server_t* me_, void* udata, int id, int is_self)
return
node
;
}
raft_node_t
*
raft_add_non_voting_node
(
raft_server_t
*
me_
,
void
*
udata
,
in
t
id
,
int
is_self
)
raft_node_t
*
raft_add_non_voting_node
(
raft_server_t
*
me_
,
void
*
udata
,
raft_node_id_
t
id
,
int
is_self
)
{
if
(
raft_get_node
(
me_
,
id
))
return
NULL
;
...
...
@@ -1058,7 +1058,7 @@ int raft_vote(raft_server_t* me_, raft_node_t* node)
return
raft_vote_for_nodeid
(
me_
,
node
?
raft_node_get_id
(
node
)
:
-
1
);
}
int
raft_vote_for_nodeid
(
raft_server_t
*
me_
,
const
in
t
nodeid
)
int
raft_vote_for_nodeid
(
raft_server_t
*
me_
,
const
raft_node_id_
t
nodeid
)
{
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
...
...
@@ -1114,14 +1114,14 @@ int raft_entry_is_cfg_change(raft_entry_t* ety)
RAFT_LOGTYPE_REMOVE_NODE
==
ety
->
type
);
}
void
raft_offer_log
(
raft_server_t
*
me_
,
raft_entry_t
*
ety
,
const
in
t
idx
)
void
raft_offer_log
(
raft_server_t
*
me_
,
raft_entry_t
*
ety
,
const
raft_index_
t
idx
)
{
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
if
(
!
raft_entry_is_cfg_change
(
ety
))
return
;
in
t
node_id
=
me
->
cb
.
log_get_node_id
(
me_
,
raft_get_udata
(
me_
),
ety
,
idx
);
raft_node_id_
t
node_id
=
me
->
cb
.
log_get_node_id
(
me_
,
raft_get_udata
(
me_
),
ety
,
idx
);
raft_node_t
*
node
=
raft_get_node
(
me_
,
node_id
);
int
is_self
=
node_id
==
raft_get_nodeid
(
me_
);
...
...
@@ -1163,14 +1163,14 @@ void raft_offer_log(raft_server_t* me_, raft_entry_t* ety, const int idx)
}
}
void
raft_pop_log
(
raft_server_t
*
me_
,
raft_entry_t
*
ety
,
const
in
t
idx
)
void
raft_pop_log
(
raft_server_t
*
me_
,
raft_entry_t
*
ety
,
const
raft_index_
t
idx
)
{
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
if
(
!
raft_entry_is_cfg_change
(
ety
))
return
;
in
t
node_id
=
me
->
cb
.
log_get_node_id
(
me_
,
raft_get_udata
(
me_
),
ety
,
idx
);
raft_node_id_
t
node_id
=
me
->
cb
.
log_get_node_id
(
me_
,
raft_get_udata
(
me_
),
ety
,
idx
);
switch
(
ety
->
type
)
{
...
...
@@ -1223,7 +1223,7 @@ int raft_poll_entry(raft_server_t* me_, raft_entry_t **ety)
return
0
;
}
in
t
raft_get_first_entry_idx
(
raft_server_t
*
me_
)
raft_index_
t
raft_get_first_entry_idx
(
raft_server_t
*
me_
)
{
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
...
...
@@ -1235,7 +1235,7 @@ int raft_get_first_entry_idx(raft_server_t* me_)
return
me
->
snapshot_last_idx
;
}
in
t
raft_get_num_snapshottable_logs
(
raft_server_t
*
me_
)
raft_index_
t
raft_get_num_snapshottable_logs
(
raft_server_t
*
me_
)
{
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
if
(
raft_get_log_count
(
me_
)
<=
1
)
...
...
@@ -1250,7 +1250,7 @@ int raft_begin_snapshot(raft_server_t *me_)
if
(
raft_get_num_snapshottable_logs
(
me_
)
==
0
)
return
-
1
;
in
t
snapshot_target
=
raft_get_commit_idx
(
me_
);
raft_index_
t
snapshot_target
=
raft_get_commit_idx
(
me_
);
if
(
!
snapshot_target
||
snapshot_target
==
0
)
return
-
1
;
...
...
@@ -1288,7 +1288,7 @@ int raft_end_snapshot(raft_server_t *me_)
assert
(
me
->
snapshot_last_idx
==
raft_get_commit_idx
(
me_
));
/* If needed, remove compacted logs */
in
t
i
=
0
,
end
=
raft_get_num_snapshottable_logs
(
me_
);
raft_index_
t
i
=
0
,
end
=
raft_get_num_snapshottable_logs
(
me_
);
for
(;
i
<
end
;
i
++
)
{
raft_entry_t
*
_ety
;
...
...
@@ -1315,7 +1315,7 @@ int raft_end_snapshot(raft_server_t *me_)
if
(
me
->
node
==
node
||
!
raft_node_is_active
(
node
))
continue
;
in
t
next_idx
=
raft_node_get_next_idx
(
node
);
raft_index_
t
next_idx
=
raft_node_get_next_idx
(
node
);
/* figure out if the client needs a snapshot sent */
if
(
0
<
me
->
snapshot_last_idx
&&
next_idx
<
me
->
snapshot_last_idx
)
...
...
@@ -1332,8 +1332,8 @@ int raft_end_snapshot(raft_server_t *me_)
int
raft_begin_load_snapshot
(
raft_server_t
*
me_
,
in
t
last_included_term
,
in
t
last_included_index
)
raft_term_
t
last_included_term
,
raft_index_
t
last_included_index
)
{
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
...
...
src/raft_server_properties.c
View file @
2343e58b
...
...
@@ -32,7 +32,7 @@ void raft_set_request_timeout(raft_server_t* me_, int millisec)
me
->
request_timeout
=
millisec
;
}
in
t
raft_get_nodeid
(
raft_server_t
*
me_
)
raft_node_id_
t
raft_get_nodeid
(
raft_server_t
*
me_
)
{
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
if
(
!
me
->
node
)
...
...
@@ -70,7 +70,7 @@ int raft_get_timeout_elapsed(raft_server_t* me_)
return
((
raft_server_private_t
*
)
me_
)
->
timeout_elapsed
;
}
in
t
raft_get_log_count
(
raft_server_t
*
me_
)
raft_index_
t
raft_get_log_count
(
raft_server_t
*
me_
)
{
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
return
log_count
(
me
->
log
);
...
...
@@ -82,7 +82,7 @@ int raft_get_voted_for(raft_server_t* me_)
return
me
->
voted_for
;
}
int
raft_set_current_term
(
raft_server_t
*
me_
,
const
in
t
term
)
int
raft_set_current_term
(
raft_server_t
*
me_
,
const
raft_term_
t
term
)
{
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
if
(
me
->
current_term
<
term
)
...
...
@@ -100,18 +100,18 @@ int raft_set_current_term(raft_server_t* me_, const int term)
return
0
;
}
in
t
raft_get_current_term
(
raft_server_t
*
me_
)
raft_term_
t
raft_get_current_term
(
raft_server_t
*
me_
)
{
return
((
raft_server_private_t
*
)
me_
)
->
current_term
;
}
in
t
raft_get_current_idx
(
raft_server_t
*
me_
)
raft_index_
t
raft_get_current_idx
(
raft_server_t
*
me_
)
{
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
return
log_get_current_idx
(
me
->
log
);
}
void
raft_set_commit_idx
(
raft_server_t
*
me_
,
in
t
idx
)
void
raft_set_commit_idx
(
raft_server_t
*
me_
,
raft_index_
t
idx
)
{
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
assert
(
me
->
commit_idx
<=
idx
);
...
...
@@ -119,18 +119,18 @@ void raft_set_commit_idx(raft_server_t* me_, int idx)
me
->
commit_idx
=
idx
;
}
void
raft_set_last_applied_idx
(
raft_server_t
*
me_
,
in
t
idx
)
void
raft_set_last_applied_idx
(
raft_server_t
*
me_
,
raft_index_
t
idx
)
{
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
me
->
last_applied_idx
=
idx
;
}
in
t
raft_get_last_applied_idx
(
raft_server_t
*
me_
)
raft_index_
t
raft_get_last_applied_idx
(
raft_server_t
*
me_
)
{
return
((
raft_server_private_t
*
)
me_
)
->
last_applied_idx
;
}
in
t
raft_get_commit_idx
(
raft_server_t
*
me_
)
raft_index_
t
raft_get_commit_idx
(
raft_server_t
*
me_
)
{
return
((
raft_server_private_t
*
)
me_
)
->
commit_idx
;
}
...
...
@@ -149,7 +149,7 @@ int raft_get_state(raft_server_t* me_)
return
((
raft_server_private_t
*
)
me_
)
->
state
;
}
raft_node_t
*
raft_get_node
(
raft_server_t
*
me_
,
in
t
nodeid
)
raft_node_t
*
raft_get_node
(
raft_server_t
*
me_
,
raft_node_id_
t
nodeid
)
{
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
int
i
;
...
...
@@ -173,13 +173,13 @@ raft_node_t* raft_get_my_node(raft_server_t *me_)
return
NULL
;
}
raft_node_t
*
raft_get_node_from_idx
(
raft_server_t
*
me_
,
const
in
t
idx
)
raft_node_t
*
raft_get_node_from_idx
(
raft_server_t
*
me_
,
const
raft_index_
t
idx
)
{
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
return
me
->
nodes
[
idx
];
}
in
t
raft_get_current_leader
(
raft_server_t
*
me_
)
raft_node_id_
t
raft_get_current_leader
(
raft_server_t
*
me_
)
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
if
(
me
->
current_leader
)
...
...
@@ -213,9 +213,9 @@ int raft_is_candidate(raft_server_t* me_)
return
raft_get_state
(
me_
)
==
RAFT_STATE_CANDIDATE
;
}
in
t
raft_get_last_log_term
(
raft_server_t
*
me_
)
raft_term_
t
raft_get_last_log_term
(
raft_server_t
*
me_
)
{
in
t
current_idx
=
raft_get_current_idx
(
me_
);
raft_index_
t
current_idx
=
raft_get_current_idx
(
me_
);
if
(
0
<
current_idx
)
{
raft_entry_t
*
ety
=
raft_get_entry_from_idx
(
me_
,
current_idx
);
...
...
@@ -243,17 +243,17 @@ raft_entry_t *raft_get_last_applied_entry(raft_server_t *me_)
return
log_get_at_idx
(
me
->
log
,
raft_get_last_applied_idx
(
me_
));
}
in
t
raft_get_snapshot_last_idx
(
raft_server_t
*
me_
)
raft_index_
t
raft_get_snapshot_last_idx
(
raft_server_t
*
me_
)
{
return
((
raft_server_private_t
*
)
me_
)
->
snapshot_last_idx
;
}
in
t
raft_get_snapshot_last_term
(
raft_server_t
*
me_
)
raft_term_
t
raft_get_snapshot_last_term
(
raft_server_t
*
me_
)
{
return
((
raft_server_private_t
*
)
me_
)
->
snapshot_last_term
;
}
void
raft_set_snapshot_metadata
(
raft_server_t
*
me_
,
int
term
,
in
t
idx
)
void
raft_set_snapshot_metadata
(
raft_server_t
*
me_
,
raft_term_t
term
,
raft_index_
t
idx
)
{
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
me
->
snapshot_last_term
=
term
;
...
...
tests/test_log.c
View file @
2343e58b
...
...
@@ -16,7 +16,7 @@ static int __logentry_get_node_id(
raft_server_t
*
raft
,
void
*
udata
,
raft_entry_t
*
ety
,
in
t
ety_idx
raft_index_
t
ety_idx
)
{
return
0
;
...
...
@@ -26,7 +26,7 @@ static int __log_offer(
raft_server_t
*
raft
,
void
*
user_data
,
raft_entry_t
*
entry
,
in
t
entry_idx
raft_index_
t
entry_idx
)
{
CuAssertIntEquals
((
CuTest
*
)
raft
,
1
,
entry_idx
);
...
...
@@ -37,7 +37,7 @@ static int __log_pop(
raft_server_t
*
raft
,
void
*
user_data
,
raft_entry_t
*
entry
,
in
t
entry_idx
raft_index_
t
entry_idx
)
{
raft_entry_t
*
copy
=
malloc
(
sizeof
(
*
entry
));
...
...
@@ -50,7 +50,7 @@ static int __log_pop_failing(
raft_server_t
*
raft
,
void
*
user_data
,
raft_entry_t
*
entry
,
in
t
entry_idx
raft_index_
t
entry_idx
)
{
return
-
1
;
...
...
tests/test_scenario.c
View file @
2343e58b
...
...
@@ -14,7 +14,7 @@
static
int
__raft_persist_term
(
raft_server_t
*
raft
,
void
*
udata
,
in
t
term
,
raft_term_
t
term
,
int
vote
)
{
...
...
tests/test_server.c
View file @
2343e58b
...
...
@@ -17,7 +17,7 @@
static
int
__raft_persist_term
(
raft_server_t
*
raft
,
void
*
udata
,
in
t
term
,
raft_term_
t
term
,
int
vote
)
{
...
...
@@ -37,7 +37,7 @@ int __raft_applylog(
raft_server_t
*
raft
,
void
*
udata
,
raft_entry_t
*
ety
,
in
t
idx
raft_index_
t
idx
)
{
return
0
;
...
...
@@ -47,7 +47,7 @@ int __raft_applylog_shutdown(
raft_server_t
*
raft
,
void
*
udata
,
raft_entry_t
*
ety
,
in
t
idx
raft_index_
t
idx
)
{
return
RAFT_ERR_SHUTDOWN
;
...
...
@@ -307,7 +307,7 @@ static int __raft_logentry_offer(
raft_server_t
*
raft
,
void
*
udata
,
raft_entry_t
*
ety
,
in
t
ety_idx
raft_index_
t
ety_idx
)
{
CuAssertIntEquals
(
udata
,
ety_idx
,
1
);
...
...
@@ -1572,14 +1572,14 @@ typedef enum {
typedef
struct
{
__raft_error_type_e
type
;
in
t
idx
;
raft_index_
t
idx
;
}
__raft_error_t
;
static
int
__raft_log_offer_error
(
raft_server_t
*
raft
,
void
*
user_data
,
raft_entry_t
*
entry
,
in
t
entry_idx
)
raft_index_
t
entry_idx
)
{
__raft_error_t
*
error
=
user_data
;
...
...
@@ -1592,7 +1592,7 @@ static int __raft_log_pop_error(
raft_server_t
*
raft
,
void
*
user_data
,
raft_entry_t
*
entry
,
in
t
entry_idx
)
raft_index_
t
entry_idx
)
{
__raft_error_t
*
error
=
user_data
;
...
...
tests/test_snapshotting.c
View file @
2343e58b
...
...
@@ -14,7 +14,7 @@
static
int
__raft_persist_term
(
raft_server_t
*
raft
,
void
*
udata
,
in
t
term
,
raft_term_
t
term
,
int
vote
)
{
...
...
@@ -34,7 +34,7 @@ static int __raft_applylog(
raft_server_t
*
raft
,
void
*
udata
,
raft_entry_t
*
ety
,
in
t
idx
raft_index_
t
idx
)
{
return
0
;
...
...
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