remove throw statements from fold functions

This commit is contained in:
Steve Vinoski 2012-04-16 21:42:04 -04:00
parent a911734134
commit 4dab3a65e5

View file

@ -169,13 +169,8 @@ fold_buckets(FoldBucketsFun, Acc, Opts, #state{tree=Tree}) ->
FoldFun = fold_buckets_fun(FoldBucketsFun), FoldFun = fold_buckets_fun(FoldBucketsFun),
BucketFolder = BucketFolder =
fun() -> fun() ->
try Range = #btree_range{to_key = <<>>},
Range = #btree_range{to_key = <<>>}, lsm_btree:sync_fold_range(Tree, FoldFun, {Acc, []}, Range)
lsm_btree:sync_fold_range(Tree, FoldFun, {Acc, []}, Range)
catch
{break, AccFinal} ->
AccFinal
end
end, end,
case lists:member(async_fold, Opts) of case lists:member(async_fold, Opts) of
true -> true ->
@ -196,23 +191,18 @@ fold_keys(FoldKeysFun, Acc, Opts, #state{tree=Tree}) ->
Index = lists:keyfind(index, 1, Opts), Index = lists:keyfind(index, 1, Opts),
%% Multiple limiters may exist. Take the most specific limiter. %% Multiple limiters may exist. Take the most specific limiter.
Limiter = Limiter = if
if Index /= false -> Index; Index /= false -> Index;
Bucket /= false -> Bucket; Bucket /= false -> Bucket;
true -> undefined true -> undefined
end, end,
%% Set up the fold... %% Set up the fold...
FoldFun = fold_keys_fun(FoldKeysFun, Limiter), FoldFun = fold_keys_fun(FoldKeysFun, Limiter),
KeyFolder = KeyFolder =
fun() -> fun() ->
try Range = #btree_range{to_key = <<>>},
Range = #btree_range{to_key = <<>>}, lsm_btree:sync_fold_range(Tree, FoldFun, Acc, Range)
lsm_btree:sync_fold_range(Tree, FoldFun, Acc, Range)
catch
{break, AccFinal} ->
AccFinal
end
end, end,
case lists:member(async_fold, Opts) of case lists:member(async_fold, Opts) of
true -> true ->
@ -231,13 +221,8 @@ fold_objects(FoldObjectsFun, Acc, Opts, #state{tree=Tree}) ->
FoldFun = fold_objects_fun(FoldObjectsFun, Bucket), FoldFun = fold_objects_fun(FoldObjectsFun, Bucket),
ObjectFolder = ObjectFolder =
fun() -> fun() ->
try Range = #btree_range{to_key = <<>>},
Range = #btree_range{to_key = <<>>}, lsm_btree:sync_fold_range(Tree, FoldFun, Acc, Range)
lsm_btree:sync_fold_range(Tree, FoldFun, Acc, Range)
catch
{break, AccFinal} ->
AccFinal
end
end, end,
case lists:member(async_fold, Opts) of case lists:member(async_fold, Opts) of
true -> true ->
@ -289,8 +274,7 @@ get_data_dir(DataRoot, Partition) ->
ok -> ok ->
{ok, PartitionDir}; {ok, PartitionDir};
{error, Reason} -> {error, Reason} ->
lager:error("Failed to create lsm_btree dir ~s: ~p", lager:error("Failed to create lsm_btree dir ~s: ~p", [PartitionDir, Reason]),
[PartitionDir, Reason]),
{error, Reason} {error, Reason}
end. end.
@ -302,9 +286,7 @@ fold_buckets_fun(FoldBucketsFun) ->
{LastBucket, _} -> {LastBucket, _} ->
{Acc, LastBucket}; {Acc, LastBucket};
{Bucket, _} -> {Bucket, _} ->
{FoldBucketsFun(Bucket, Acc), Bucket}; {FoldBucketsFun(Bucket, Acc), Bucket}
_ ->
throw({break, Acc})
end end
end. end.
@ -317,7 +299,7 @@ fold_keys_fun(FoldKeysFun, undefined) ->
{Bucket, Key} -> {Bucket, Key} ->
FoldKeysFun(Bucket, Key, Acc); FoldKeysFun(Bucket, Key, Acc);
_ -> _ ->
throw({break, Acc}) Acc
end end
end; end;
fold_keys_fun(FoldKeysFun, {bucket, FilterBucket}) -> fold_keys_fun(FoldKeysFun, {bucket, FilterBucket}) ->
@ -327,7 +309,7 @@ fold_keys_fun(FoldKeysFun, {bucket, FilterBucket}) ->
{Bucket, Key} when Bucket == FilterBucket -> {Bucket, Key} when Bucket == FilterBucket ->
FoldKeysFun(Bucket, Key, Acc); FoldKeysFun(Bucket, Key, Acc);
_ -> _ ->
throw({break, Acc}) Acc
end end
end; end;
fold_keys_fun(_FoldKeysFun, Other) -> fold_keys_fun(_FoldKeysFun, Other) ->
@ -342,7 +324,7 @@ fold_objects_fun(FoldObjectsFun, FilterBucket) ->
Bucket == FilterBucket -> Bucket == FilterBucket ->
FoldObjectsFun(Bucket, Key, Value, Acc); FoldObjectsFun(Bucket, Key, Value, Acc);
_ -> _ ->
throw({break, Acc}) Acc
end end
end. end.
@ -363,13 +345,13 @@ from_object_key(LKey) ->
-ifdef(TEST). -ifdef(TEST).
simple_test_() -> simple_test_() ->
?assertCmd("rm -rf test/lsm_btree-backend"), ?assertCmd("rm -rf test/lsm-btree-backend"),
application:set_env(lsm_btree, data_root, "test/lsm_btree-backend"), application:set_env(lsm_btree, data_root, "test/lsm-btree-backend"),
lsm_btree_temp_riak_kv_backend:standard_test(?MODULE, []). lsm_btree_temp_riak_kv_backend:standard_test(?MODULE, []).
custom_config_test_() -> custom_config_test_() ->
?assertCmd("rm -rf test/lsm_btree-backend"), ?assertCmd("rm -rf test/lsm_btree-backend"),
application:set_env(lsm_btree, data_root, ""), application:set_env(lsm_btree, data_root, ""),
lsm_btree_temp_riak_kv_backend:standard_test(?MODULE, [{data_root, "test/lsm_btree-backend"}]). lsm_btree_temp_riak_kv_backend:standard_test(?MODULE, [{data_root, "test/lsm-btree-backend"}]).
-endif. -endif.