Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions src/raft_server.c
Original file line number Diff line number Diff line change
Expand Up @@ -1396,8 +1396,10 @@ int raft_begin_load_snapshot(
{
if (raft_get_nodeid(me_) == raft_node_get_id(me->nodes[i]))
my_node_by_idx = i;
else
raft_node_set_active(me->nodes[i], 0);
else {
raft_node_free(me->nodes[i]);
me->nodes[i] = NULL;
}
}

/* this will be realloc'd by a raft_add_node */
Expand Down
9 changes: 8 additions & 1 deletion tests/test_snapshotting.c
Original file line number Diff line number Diff line change
Expand Up @@ -540,6 +540,10 @@ void TestRaft_leader_sends_appendentries_when_node_next_index_was_compacted(CuTe
CuAssertIntEquals(tc, 0, raft_end_load_snapshot(r));
CuAssertIntEquals(tc, 3, raft_get_current_idx(r));

/* reconfigure nodes based on config data "embedded in snapshot" */
node = raft_add_node(r, NULL, 2, 0);
raft_add_node(r, NULL, 3, 0);

/* node wants an entry that was compacted */
raft_node_set_next_idx(node, raft_get_current_idx(r));

Expand Down Expand Up @@ -682,7 +686,10 @@ void TestRaft_leader_sends_appendentries_with_correct_prev_log_idx_when_snapshot
/* i'm leader */
raft_set_state(r, RAFT_STATE_LEADER);

raft_node_t* p = raft_get_node_from_idx(r, 1);
/* reload node configuration; we expect the app to decode it from
* the loaded snapshot.
*/
raft_node_t* p = raft_add_node(r, NULL, 2, 0);
CuAssertTrue(tc, NULL != p);
raft_node_set_next_idx(p, 4);

Expand Down