From c6ca973517e73a6a712acaaf8e7a3d8b5a63d6f7 Mon Sep 17 00:00:00 2001 From: martinsumner Date: Thu, 27 Oct 2016 21:40:43 +0100 Subject: [PATCH] Penciller shutdown when empty Stop the penciller from writing an empty file, when shutting down and the L0 Cache is empty. Also parameter fiddle to see impact of the Penciller changes. --- src/leveled_bookie.erl | 2 +- src/leveled_penciller.erl | 11 +++++++---- test/end_to_end/basic_SUITE.erl | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/leveled_bookie.erl b/src/leveled_bookie.erl index f89e399..af8b8ed 100644 --- a/src/leveled_bookie.erl +++ b/src/leveled_bookie.erl @@ -157,7 +157,7 @@ -define(SHUTDOWN_WAITS, 60). -define(SHUTDOWN_PAUSE, 10000). -define(SNAPSHOT_TIMEOUT, 300000). --define(JITTER_PROBABILITY, 0.1). +-define(JITTER_PROBABILITY, 0.01). -record(state, {inker :: pid(), penciller :: pid(), diff --git a/src/leveled_penciller.erl b/src/leveled_penciller.erl index 2509ad2..698b9b5 100644 --- a/src/leveled_penciller.erl +++ b/src/leveled_penciller.erl @@ -588,15 +588,18 @@ terminate(Reason, State) -> State end, case {UpdState#state.levelzero_pending, - get_item(0, State#state.manifest, [])} of - {true, []} -> + get_item(0, State#state.manifest, []), + gb_trees:size(State#state.levelzero_cache)} of + {true, [], _} -> ok = leveled_sft:sft_close(State#state.levelzero_constructor); - {false, []} -> + {false, [], 0} -> + io:format("Level 0 cache empty at close of Penciller~n"); + {false, [], _N} -> KL = roll_into_list(State#state.levelzero_cache), L0Pid = roll_memory(UpdState, KL, true), ok = leveled_sft:sft_close(L0Pid); _ -> - ok + io:format("No level zero action on close of Penciller~n") end, leveled_pclerk:rollclerk_close(State#state.roll_clerk), diff --git a/test/end_to_end/basic_SUITE.erl b/test/end_to_end/basic_SUITE.erl index 9096bda..5514f10 100644 --- a/test/end_to_end/basic_SUITE.erl +++ b/test/end_to_end/basic_SUITE.erl @@ -16,7 +16,7 @@ all() -> [ many_put_fetch_head, journal_compaction, fetchput_snapshot, - load_and_count , + load_and_count, load_and_count_withdelete, space_clear_ondelete ].