diff --git a/src/leveled_cdb.erl b/src/leveled_cdb.erl index 8360a7f..a24feb4 100644 --- a/src/leveled_cdb.erl +++ b/src/leveled_cdb.erl @@ -58,7 +58,8 @@ {gen_fsm, sync_send_event, 2}, {gen_fsm, send_event, 2}, {gen_fsm, sync_send_all_state_event, 3}, - {gen_fsm, send_all_state_event, 2}]}). + {gen_fsm, send_all_state_event, 2}, + {gen_fsm, reply, 2}]}). -endif. -ifdef(slow_test). @@ -441,7 +442,7 @@ starting({open_writer, Filename}, _From, State) -> last_position=LastPosition, last_key=LastKey, filename=Filename, - hashtree=HashTree} + hashtree=HashTree}, {reply, ok, writer, State0, hibernate}; starting({open_reader, Filename}, _From, State) -> leveled_log:save(State#state.log_options), @@ -450,7 +451,7 @@ starting({open_reader, Filename}, _From, State) -> State0 = State#state{handle=Handle, last_key=LastKey, filename=Filename, - hash_index=Index} + hash_index=Index}, {reply, ok, reader, State0, hibernate}; starting({open_reader, Filename, LastKey}, _From, State) -> leveled_log:save(State#state.log_options), @@ -459,7 +460,7 @@ starting({open_reader, Filename, LastKey}, _From, State) -> State0 = State#state{handle=Handle, last_key=LastKey, filename=Filename, - hash_index=Index} + hash_index=Index}, {reply, ok, reader, State0, hibernate}. writer({get_kv, Key}, _From, State) -> diff --git a/src/leveled_sst.erl b/src/leveled_sst.erl index c5768cf..512c289 100644 --- a/src/leveled_sst.erl +++ b/src/leveled_sst.erl @@ -717,8 +717,7 @@ reader(close, _From, State) -> {stop, normal, ok, State}. reader({switch_levels, NewLevel}, State) -> - erlang:garbage_collect(self()), - {next_state, reader, State#state{level = NewLevel}}. + {next_state, reader, State#state{level = NewLevel}, hibernate}. delete_pending({get_kv, LedgerKey, Hash}, _From, State) -> @@ -792,8 +791,7 @@ handle_info(tidyup_after_startup, delete_pending, State) -> handle_info(tidyup_after_startup, StateName, State) -> case is_process_alive(State#state.starting_pid) of true -> - erlang:garbage_collect(self()), - {next_state, StateName, State}; + {next_state, StateName, State, hibernate}; false -> {stop, normal, State} end.