Add GC are initialisation
in OTP R16 (and perhaps other OTP releases) there is a failure to fully garbage collect leveled_sst files after thya have initialised. They sppear to maintain a 4MB "hangover" from the initialisation process. This can be removed by manually calling garbage_collect. So we do this now on all new non-L0 files. A L0 file will be short-lived or switched - short-lived and it doesn't matter, switched and this is already GC'd.
This commit is contained in:
parent
1c5bc3f6d3
commit
42c4100c2d
1 changed files with 5 additions and 2 deletions
|
@ -512,12 +512,14 @@ starting({sst_new,
|
||||||
leveled_log:log_timer("SST08",
|
leveled_log:log_timer("SST08",
|
||||||
[ActualFilename, Level, Summary#summary.max_sqn],
|
[ActualFilename, Level, Summary#summary.max_sqn],
|
||||||
SW),
|
SW),
|
||||||
|
erlang:send_after(?STARTUP_TIMEOUT, self(), timeout),
|
||||||
|
% always want to have an opportunity to GC - so force the timeout to
|
||||||
|
% occur whether or not there is an intervening message
|
||||||
{reply,
|
{reply,
|
||||||
{ok, {Summary#summary.first_key, Summary#summary.last_key}, Bloom},
|
{ok, {Summary#summary.first_key, Summary#summary.last_key}, Bloom},
|
||||||
reader,
|
reader,
|
||||||
UpdState#state{blockindex_cache = BlockIndex,
|
UpdState#state{blockindex_cache = BlockIndex,
|
||||||
starting_pid = StartingPID},
|
starting_pid = StartingPID}};
|
||||||
?STARTUP_TIMEOUT};
|
|
||||||
starting({sst_newlevelzero, RootPath, Filename,
|
starting({sst_newlevelzero, RootPath, Filename,
|
||||||
Penciller, MaxSQN,
|
Penciller, MaxSQN,
|
||||||
OptsSST, IdxModDate}, _From, State) ->
|
OptsSST, IdxModDate}, _From, State) ->
|
||||||
|
@ -715,6 +717,7 @@ reader(switch_levels, State) ->
|
||||||
reader(timeout, State) ->
|
reader(timeout, State) ->
|
||||||
case is_process_alive(State#state.starting_pid) of
|
case is_process_alive(State#state.starting_pid) of
|
||||||
true ->
|
true ->
|
||||||
|
erlang:garbage_collect(self()),
|
||||||
{next_state, reader, State};
|
{next_state, reader, State};
|
||||||
false ->
|
false ->
|
||||||
{stop, normal, State}
|
{stop, normal, State}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue