From fc998d2971825022e0d36b77a575d77a17385871 Mon Sep 17 00:00:00 2001 From: Martin Sumner Date: Tue, 5 Jun 2018 16:57:54 +0100 Subject: [PATCH] GC Inker Manifest --- src/leveled_imanifest.erl | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/leveled_imanifest.erl b/src/leveled_imanifest.erl index 76495f8..e619ab0 100644 --- a/src/leveled_imanifest.erl +++ b/src/leveled_imanifest.erl @@ -27,6 +27,7 @@ -define(MANIFEST_FILEX, "man"). -define(PENDING_FILEX, "pnd"). -define(SKIP_WIDTH, 16). +-define(MANIFESTS_TO_RETAIN, 5). -type manifest() :: list({integer(), list()}). %% The manifest is divided into blocks by sequence number, with each block @@ -169,9 +170,18 @@ writer(Manifest, ManSQN, RootPath) -> false -> leveled_log:log("I0016", [ManSQN]), ok = file:write_file(TmpFN, MBin), - ok = file:rename(TmpFN, NewFN), - ok - end. + ok = file:rename(TmpFN, NewFN) + end, + GC_SQN = ManSQN - ?MANIFESTS_TO_RETAIN, + GC_Man = filename:join(ManPath, + integer_to_list(GC_SQN) ++ "." ++ ?MANIFEST_FILEX), + ok = + case filelib:is_file(GC_Man) of + true -> + file:delete(GC_Man); + _ -> + ok + end. -spec printer(manifest()) -> ok. %% @doc