Add support for folding keys on a single bucket

This commit is contained in:
martinsumner 2016-11-17 15:55:29 +00:00
parent 67a9f5bae6
commit e3004faa6e
3 changed files with 21 additions and 9 deletions

View file

@ -349,6 +349,10 @@ handle_call({return_folder, FolderType}, _From, State) ->
{reply,
allkey_query(State, Tag),
State};
{keylist, Tag, Bucket} ->
{reply,
bucketkey_query(State, Tag, Bucket),
State};
{hashtree_query, Tag, JournalCheck} ->
{reply,
hashtree_query(State, Tag, JournalCheck),
@ -535,7 +539,7 @@ foldobjects(State, Tag, StartKey, EndKey, FoldObjectsFun) ->
{async, Folder}.
allkey_query(State, Tag) ->
bucketkey_query(State, Tag, Bucket) ->
{ok,
{LedgerSnapshot, LedgerCache},
_JournalSnapshot} = snapshot_store(State, ledger),
@ -543,8 +547,8 @@ allkey_query(State, Tag) ->
leveled_log:log("B0004", [gb_trees:size(LedgerCache)]),
ok = leveled_penciller:pcl_loadsnapshot(LedgerSnapshot,
LedgerCache),
SK = leveled_codec:to_ledgerkey(null, null, Tag),
EK = leveled_codec:to_ledgerkey(null, null, Tag),
SK = leveled_codec:to_ledgerkey(Bucket, null, Tag),
EK = leveled_codec:to_ledgerkey(Bucket, null, Tag),
AccFun = accumulate_keys(),
Acc = leveled_penciller:pcl_fetchkeys(LedgerSnapshot,
SK,
@ -556,6 +560,9 @@ allkey_query(State, Tag) ->
end,
{async, Folder}.
allkey_query(State, Tag) ->
bucketkey_query(State, Tag, null).
snapshot_store(State, SnapType) ->
PCLopts = #penciller_options{start_snapshot=true,

View file

@ -428,6 +428,11 @@ rotating_object_check(RootPath, B, NumberOfObjects) ->
ok = testutil:check_indexed_objects(Book2, B, KSpcL3, V3),
{KSpcL4, V4} = testutil:put_altered_indexed_objects(Book2, B, KSpcL3),
ok = testutil:check_indexed_objects(Book2, B, KSpcL4, V4),
{async, BList} = leveled_bookie:book_returnfolder(Book2,
{keylist,
?RIAK_TAG,
B}),
true = NumberOfObjects == length(BList()),
ok = leveled_bookie:book_close(Book2),
ok.

View file

@ -27,7 +27,7 @@
-export([new/1,
run/4]).
-include("basho_bench.hrl").
% -include("basho_bench.hrl").
-record(state, {
instance
@ -37,7 +37,7 @@ get_instances() ->
case basho_bench_config:get(eleveleddb_instances, undefined) of
undefined ->
Instances = start_instances(),
?INFO("Instances started ~w~n", [Instances]),
% ?INFO("Instances started ~w~n", [Instances]),
basho_bench_config:set(eleveleddb_instances, Instances),
Instances;
Instances ->
@ -48,11 +48,11 @@ get_instances() ->
start_instances() ->
BaseDir = basho_bench_config:get(eleveleddb_dir, "."),
Num = basho_bench_config:get(eleveleddb_num_instances, 1),
?INFO("Starting up ~p eleveleddb instances under ~s .\n",
[Num, BaseDir]),
% ?INFO("Starting up ~p eleveleddb instances under ~s .\n",
% [Num, BaseDir]),
Refs = [begin
Dir = filename:join(BaseDir, "instance." ++ integer_to_list(N)),
?INFO("Opening eleveleddb instance in ~s\n", [Dir]),
% ?INFO("Opening eleveleddb instance in ~s\n", [Dir]),
{ok, Ref} = leveled_bookie:book_start(Dir, 2000, 500000000),
Ref
end || N <- lists:seq(1, Num)],
@ -62,7 +62,7 @@ new(Id) ->
Instances = get_instances(),
Count = size(Instances),
Idx = ((Id - 1) rem Count) + 1,
?INFO("Worker ~p using instance ~p.\n", [Id, Idx]),
% ?INFO("Worker ~p using instance ~p.\n", [Id, Idx]),
State = #state{instance = element(Idx, Instances)},
{ok, State}.