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
ca3c0b0e
Commit
ca3c0b0e
authored
Aug 15, 2018
by
Yossi Gottlieb
Browse files
Fix raft_cancel_snapshot() typo, add test.
parent
074091c1
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/raft_server.c
View file @
ca3c0b0e
...
...
@@ -1287,7 +1287,7 @@ int raft_cancel_snapshot(raft_server_t *me_)
me
->
snapshot_last_idx
=
me
->
saved_snapshot_last_idx
;
me
->
snapshot_last_term
=
me
->
saved_snapshot_last_term
;
me
->
snapshot_in_progress
=
1
;
me
->
snapshot_in_progress
=
0
;
return
0
;
}
...
...
@@ -1340,8 +1340,6 @@ int raft_end_snapshot(raft_server_t *me_)
}
}
assert
(
raft_get_log_count
(
me_
)
==
1
);
return
0
;
}
...
...
tests/test_snapshotting.c
View file @
ca3c0b0e
...
...
@@ -644,3 +644,55 @@ void TestRaft_leader_sends_appendentries_with_correct_prev_log_idx_when_snapshot
CuAssertIntEquals
(
tc
,
2
,
ae
->
prev_log_term
);
CuAssertIntEquals
(
tc
,
4
,
ae
->
prev_log_idx
);
}
void
TestRaft_cancel_snapshot_restores_state
(
CuTest
*
tc
)
{
raft_cbs_t
funcs
=
{
.
send_appendentries
=
__raft_send_appendentries
,
};
void
*
r
=
raft_new
();
raft_set_callbacks
(
r
,
&
funcs
,
NULL
);
msg_entry_response_t
cr
;
raft_add_node
(
r
,
NULL
,
1
,
1
);
raft_add_node
(
r
,
NULL
,
2
,
0
);
/* I am the leader */
raft_set_state
(
r
,
RAFT_STATE_LEADER
);
CuAssertIntEquals
(
tc
,
0
,
raft_get_log_count
(
r
));
/* single entry */
msg_entry_t
ety
=
{};
ety
.
id
=
1
;
ety
.
data
.
buf
=
"entry"
;
ety
.
data
.
len
=
strlen
(
"entry"
);
raft_recv_entry
(
r
,
&
ety
,
&
cr
);
ety
.
id
=
2
;
raft_recv_entry
(
r
,
&
ety
,
&
cr
);
raft_set_commit_idx
(
r
,
2
);
CuAssertIntEquals
(
tc
,
0
,
raft_begin_snapshot
(
r
));
CuAssertIntEquals
(
tc
,
0
,
raft_end_snapshot
(
r
));
/* more entries */
ety
.
id
=
3
;
raft_recv_entry
(
r
,
&
ety
,
&
cr
);
ety
.
id
=
4
;
raft_recv_entry
(
r
,
&
ety
,
&
cr
);
CuAssertIntEquals
(
tc
,
2
,
raft_get_log_count
(
r
));
CuAssertIntEquals
(
tc
,
2
,
raft_get_snapshot_last_idx
(
r
));
/* begin and cancel another snapshot */
raft_set_commit_idx
(
r
,
4
);
CuAssertIntEquals
(
tc
,
0
,
raft_begin_snapshot
(
r
));
CuAssertIntEquals
(
tc
,
1
,
raft_snapshot_is_in_progress
(
r
));
CuAssertIntEquals
(
tc
,
0
,
raft_cancel_snapshot
(
r
));
/* snapshot no longer in progress, index must not have changed */
CuAssertIntEquals
(
tc
,
0
,
raft_snapshot_is_in_progress
(
r
));
CuAssertIntEquals
(
tc
,
2
,
raft_get_snapshot_last_idx
(
r
));
}
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