From 14ebf94e568aa8b7e6640b4388851c3b9e39c2fc Mon Sep 17 00:00:00 2001 From: martinsumner Date: Tue, 17 Jan 2017 10:53:13 +0000 Subject: [PATCH] Correct botched manifest entry removal --- src/leveled_log.erl | 4 ++-- src/leveled_manifest.erl | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/leveled_log.erl b/src/leveled_log.erl index 5250a7e..d2c8a3b 100644 --- a/src/leveled_log.erl +++ b/src/leveled_log.erl @@ -154,7 +154,7 @@ {"PC011", {info, "Merge completed with MSN=~w to Level=~w and FileCounter=~w"}}, {"PC012", - {debug, "File to be created as part of MSN=~w Filename=~s " + {info, "File to be created as part of MSN=~w Filename=~s " ++ "IsBasement=~w"}}, {"PC013", {warn, "Merge resulted in empty file ~s"}}, @@ -167,7 +167,7 @@ {"PC018", {info, "Saved manifest file"}}, {"PC019", - {info, "After ~s level ~w is ~w"}}, + {debug, "After ~s level ~w is ~w"}}, {"I0001", {info, "Unexpected failure to fetch value for Key=~w SQN=~w " diff --git a/src/leveled_manifest.erl b/src/leveled_manifest.erl index 8d5e192..7150c37 100644 --- a/src/leveled_manifest.erl +++ b/src/leveled_manifest.erl @@ -332,18 +332,18 @@ add_entry(_LevelIdx, Level, Entry) -> remove_entry(_LevelIdx, Level, Entries) when is_list(Entries) -> % We're assuming we're removing a sorted sublist RemLength = length(Entries), - RemStart = lists:nth(1, Entries), - remove_section(Level, RemStart#manifest_entry.start_key, RemLength - 1); + [RemStart|_Tail] = Entries, + remove_section(Level, RemStart#manifest_entry.start_key, RemLength); remove_entry(_LevelIdx, Level, Entry) -> - remove_section(Level, Entry#manifest_entry.start_key, 0). + remove_section(Level, Entry#manifest_entry.start_key, 1). -remove_section(Level, StartKey, Length) -> +remove_section(Level, SectionStartKey, SectionLength) -> PredFun = fun(E) -> - E#manifest_entry.start_key < StartKey + E#manifest_entry.start_key < SectionStartKey end, {Pre, Rest} = lists:splitwith(PredFun, Level), - Post = lists:nthtail(length(Rest) - Length, Rest), + Post = lists:nthtail(SectionLength, Rest), Pre ++ Post.