From 9c26c60903dce85d3b1f9fac09a2e65aef8a572f Mon Sep 17 00:00:00 2001 From: Jared Morrow Date: Thu, 29 Aug 2013 14:30:50 -0600 Subject: [PATCH 1/2] Change meck repo to basho fork --- rebar.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rebar.config b/rebar.config index a35bbbfb..8b4542ef 100644 --- a/rebar.config +++ b/rebar.config @@ -1,7 +1,7 @@ {port_specs, [{"priv/bitcask.so", ["c_src/*.c"]}]}. {deps, [ - {meck, ".*", {git, "git://github.com/eproxus/meck"}} + {meck, ".*", {git, "git://github.com/basho/meck", {tag, "0.8.1"}}} ]}. {port_env, [ From c8c2d5249687bbd1f909f57ff8842b9167107d1a Mon Sep 17 00:00:00 2001 From: Christian Dahlqvist Date: Mon, 30 Sep 2013 13:50:09 +0100 Subject: [PATCH 2/2] Added ability to specify list of merge windows for added flexibility --- src/bitcask_merge_worker.erl | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/src/bitcask_merge_worker.erl b/src/bitcask_merge_worker.erl index 78a5b823..24d472de 100644 --- a/src/bitcask_merge_worker.erl +++ b/src/bitcask_merge_worker.erl @@ -151,6 +151,12 @@ merge_window() -> always; {ok, never} -> never; + {ok, []} -> + error_logger:error_msg("Empty bitcask_merge window list specified. " + "Defaulting to 'always'.\n"), + always; + {ok, WindowList} when is_list(WindowList) -> + WindowList; {ok, {StartHour, EndHour}} when StartHour >= 0, StartHour =< 23, EndHour >= 0, EndHour =< 23 -> {StartHour, EndHour}; @@ -164,11 +170,36 @@ in_merge_window(_NowHour, always) -> true; in_merge_window(_NowHour, never) -> false; +in_merge_window(NowHour, Windows) when is_list(Windows) -> + in_merge_window_list(NowHour, Windows); in_merge_window(NowHour, {Start, End}) when Start =< End -> (NowHour >= Start) and (NowHour =< End); in_merge_window(NowHour, {Start, End}) when Start > End -> (NowHour >= Start) or (NowHour =< End). - +in_merge_window_list(_NowHour, []) -> + false; +in_merge_window_list(NowHour, [{Start, End} | List]) when Start >= 0, Start =< 23, + End >= 0, End =< 23, + Start =< End -> + case (NowHour >= Start) and (NowHour =< End) of + true -> + true; + false -> + in_merge_window_list(NowHour, List) + end; +in_merge_window_list(NowHour, [{Start, End} | List]) when Start >= 0, Start =< 23, + End >= 0, End =< 23, + Start > End -> + case (NowHour >= Start) or (NowHour =< End) of + true -> + true; + false -> + in_merge_window_list(NowHour, List) + end; +in_merge_window_list(_NowHour, [E | _List]) -> + error_logger:error_msg("Invalid bitcask_merge window specified in list: ~p. " + "Defaulting to 'always'.\n", [E]), + true. %% ==================================================================== %% Unit tests