Skip to content

Commit c8c2d52

Browse files
Christian DahlqvistChristian Dahlqvist
Christian Dahlqvist
authored and
Christian Dahlqvist
committed
Added ability to specify list of merge windows for added flexibility
1 parent 9c26c60 commit c8c2d52

File tree

1 file changed

+32
-1
lines changed

1 file changed

+32
-1
lines changed

src/bitcask_merge_worker.erl

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,12 @@ merge_window() ->
151151
always;
152152
{ok, never} ->
153153
never;
154+
{ok, []} ->
155+
error_logger:error_msg("Empty bitcask_merge window list specified. "
156+
"Defaulting to 'always'.\n"),
157+
always;
158+
{ok, WindowList} when is_list(WindowList) ->
159+
WindowList;
154160
{ok, {StartHour, EndHour}} when StartHour >= 0, StartHour =< 23,
155161
EndHour >= 0, EndHour =< 23 ->
156162
{StartHour, EndHour};
@@ -164,11 +170,36 @@ in_merge_window(_NowHour, always) ->
164170
true;
165171
in_merge_window(_NowHour, never) ->
166172
false;
173+
in_merge_window(NowHour, Windows) when is_list(Windows) ->
174+
in_merge_window_list(NowHour, Windows);
167175
in_merge_window(NowHour, {Start, End}) when Start =< End ->
168176
(NowHour >= Start) and (NowHour =< End);
169177
in_merge_window(NowHour, {Start, End}) when Start > End ->
170178
(NowHour >= Start) or (NowHour =< End).
171-
179+
in_merge_window_list(_NowHour, []) ->
180+
false;
181+
in_merge_window_list(NowHour, [{Start, End} | List]) when Start >= 0, Start =< 23,
182+
End >= 0, End =< 23,
183+
Start =< End ->
184+
case (NowHour >= Start) and (NowHour =< End) of
185+
true ->
186+
true;
187+
false ->
188+
in_merge_window_list(NowHour, List)
189+
end;
190+
in_merge_window_list(NowHour, [{Start, End} | List]) when Start >= 0, Start =< 23,
191+
End >= 0, End =< 23,
192+
Start > End ->
193+
case (NowHour >= Start) or (NowHour =< End) of
194+
true ->
195+
true;
196+
false ->
197+
in_merge_window_list(NowHour, List)
198+
end;
199+
in_merge_window_list(_NowHour, [E | _List]) ->
200+
error_logger:error_msg("Invalid bitcask_merge window specified in list: ~p. "
201+
"Defaulting to 'always'.\n", [E]),
202+
true.
172203

173204
%% ====================================================================
174205
%% Unit tests

0 commit comments

Comments
 (0)