From e01b310d2059fd77e6d357fdcd415661ee3b329f Mon Sep 17 00:00:00 2001 From: martinsumner Date: Thu, 29 Dec 2016 05:09:47 +0000 Subject: [PATCH] Handle production of empty file --- src/leveled_log.erl | 2 -- src/leveled_pclerk.erl | 4 +--- src/leveled_sst.erl | 25 +++++++++++++++---------- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/leveled_log.erl b/src/leveled_log.erl index 8ab798f..de73c23 100644 --- a/src/leveled_log.erl +++ b/src/leveled_log.erl @@ -152,8 +152,6 @@ {info, "File to be created as part of MSN=~w Filename=~s"}}, {"PC013", {warn, "Merge resulted in empty file ~s"}}, - {"PC014", - {info, "Empty file ~s to be cleared"}}, {"PC015", {info, "File created"}}, {"PC016", diff --git a/src/leveled_pclerk.erl b/src/leveled_pclerk.erl index 2f29920..1744a3d 100644 --- a/src/leveled_pclerk.erl +++ b/src/leveled_pclerk.erl @@ -319,10 +319,8 @@ do_merge(KL1, KL2, {SrcLevel, IsB}, {Filepath, MSN}, MaxSQN, SrcLevel + 1, MaxSQN), case Reply of - {{[], []}, null, _} -> + empty -> leveled_log:log("PC013", [FileName]), - leveled_log:log("PC014", [FileName]), - ok = leveled_sst:sst_clear(Pid), OutList; {{KL1Rem, KL2Rem}, SmallestKey, HighestKey} -> ExtMan = lists:append(OutList, diff --git a/src/leveled_sst.erl b/src/leveled_sst.erl index 3fc5ef3..41fcbb6 100644 --- a/src/leveled_sst.erl +++ b/src/leveled_sst.erl @@ -146,16 +146,21 @@ sst_new(Filename, Level, KVList, MaxSQN) -> sst_new(Filename, KL1, KL2, IsBasement, Level, MaxSQN) -> {{Rem1, Rem2}, MergedList} = merge_lists(KL1, KL2, {IsBasement, Level}), - {ok, Pid} = gen_fsm:start(?MODULE, [], []), - case gen_fsm:sync_send_event(Pid, - {sst_new, - Filename, - Level, - MergedList, - MaxSQN}, - infinity) of - {ok, {SK, EK}} -> - {ok, Pid, {{Rem1, Rem2}, SK, EK}} + case MergedList of + [] -> + empty; + _ -> + {ok, Pid} = gen_fsm:start(?MODULE, [], []), + case gen_fsm:sync_send_event(Pid, + {sst_new, + Filename, + Level, + MergedList, + MaxSQN}, + infinity) of + {ok, {SK, EK}} -> + {ok, Pid, {{Rem1, Rem2}, SK, EK}} + end end. sst_newlevelzero(Filename, Slots, FetchFun, Penciller, MaxSQN) ->