Add support for folding keys on a single bucket
This commit is contained in:
parent
67a9f5bae6
commit
e3004faa6e
3 changed files with 21 additions and 9 deletions
|
@ -349,6 +349,10 @@ handle_call({return_folder, FolderType}, _From, State) ->
|
||||||
{reply,
|
{reply,
|
||||||
allkey_query(State, Tag),
|
allkey_query(State, Tag),
|
||||||
State};
|
State};
|
||||||
|
{keylist, Tag, Bucket} ->
|
||||||
|
{reply,
|
||||||
|
bucketkey_query(State, Tag, Bucket),
|
||||||
|
State};
|
||||||
{hashtree_query, Tag, JournalCheck} ->
|
{hashtree_query, Tag, JournalCheck} ->
|
||||||
{reply,
|
{reply,
|
||||||
hashtree_query(State, Tag, JournalCheck),
|
hashtree_query(State, Tag, JournalCheck),
|
||||||
|
@ -535,7 +539,7 @@ foldobjects(State, Tag, StartKey, EndKey, FoldObjectsFun) ->
|
||||||
{async, Folder}.
|
{async, Folder}.
|
||||||
|
|
||||||
|
|
||||||
allkey_query(State, Tag) ->
|
bucketkey_query(State, Tag, Bucket) ->
|
||||||
{ok,
|
{ok,
|
||||||
{LedgerSnapshot, LedgerCache},
|
{LedgerSnapshot, LedgerCache},
|
||||||
_JournalSnapshot} = snapshot_store(State, ledger),
|
_JournalSnapshot} = snapshot_store(State, ledger),
|
||||||
|
@ -543,8 +547,8 @@ allkey_query(State, Tag) ->
|
||||||
leveled_log:log("B0004", [gb_trees:size(LedgerCache)]),
|
leveled_log:log("B0004", [gb_trees:size(LedgerCache)]),
|
||||||
ok = leveled_penciller:pcl_loadsnapshot(LedgerSnapshot,
|
ok = leveled_penciller:pcl_loadsnapshot(LedgerSnapshot,
|
||||||
LedgerCache),
|
LedgerCache),
|
||||||
SK = leveled_codec:to_ledgerkey(null, null, Tag),
|
SK = leveled_codec:to_ledgerkey(Bucket, null, Tag),
|
||||||
EK = leveled_codec:to_ledgerkey(null, null, Tag),
|
EK = leveled_codec:to_ledgerkey(Bucket, null, Tag),
|
||||||
AccFun = accumulate_keys(),
|
AccFun = accumulate_keys(),
|
||||||
Acc = leveled_penciller:pcl_fetchkeys(LedgerSnapshot,
|
Acc = leveled_penciller:pcl_fetchkeys(LedgerSnapshot,
|
||||||
SK,
|
SK,
|
||||||
|
@ -556,6 +560,9 @@ allkey_query(State, Tag) ->
|
||||||
end,
|
end,
|
||||||
{async, Folder}.
|
{async, Folder}.
|
||||||
|
|
||||||
|
allkey_query(State, Tag) ->
|
||||||
|
bucketkey_query(State, Tag, null).
|
||||||
|
|
||||||
|
|
||||||
snapshot_store(State, SnapType) ->
|
snapshot_store(State, SnapType) ->
|
||||||
PCLopts = #penciller_options{start_snapshot=true,
|
PCLopts = #penciller_options{start_snapshot=true,
|
||||||
|
|
|
@ -428,6 +428,11 @@ rotating_object_check(RootPath, B, NumberOfObjects) ->
|
||||||
ok = testutil:check_indexed_objects(Book2, B, KSpcL3, V3),
|
ok = testutil:check_indexed_objects(Book2, B, KSpcL3, V3),
|
||||||
{KSpcL4, V4} = testutil:put_altered_indexed_objects(Book2, B, KSpcL3),
|
{KSpcL4, V4} = testutil:put_altered_indexed_objects(Book2, B, KSpcL3),
|
||||||
ok = testutil:check_indexed_objects(Book2, B, KSpcL4, V4),
|
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 = leveled_bookie:book_close(Book2),
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
-export([new/1,
|
-export([new/1,
|
||||||
run/4]).
|
run/4]).
|
||||||
|
|
||||||
-include("basho_bench.hrl").
|
% -include("basho_bench.hrl").
|
||||||
|
|
||||||
-record(state, {
|
-record(state, {
|
||||||
instance
|
instance
|
||||||
|
@ -37,7 +37,7 @@ get_instances() ->
|
||||||
case basho_bench_config:get(eleveleddb_instances, undefined) of
|
case basho_bench_config:get(eleveleddb_instances, undefined) of
|
||||||
undefined ->
|
undefined ->
|
||||||
Instances = start_instances(),
|
Instances = start_instances(),
|
||||||
?INFO("Instances started ~w~n", [Instances]),
|
% ?INFO("Instances started ~w~n", [Instances]),
|
||||||
basho_bench_config:set(eleveleddb_instances, Instances),
|
basho_bench_config:set(eleveleddb_instances, Instances),
|
||||||
Instances;
|
Instances;
|
||||||
Instances ->
|
Instances ->
|
||||||
|
@ -48,11 +48,11 @@ get_instances() ->
|
||||||
start_instances() ->
|
start_instances() ->
|
||||||
BaseDir = basho_bench_config:get(eleveleddb_dir, "."),
|
BaseDir = basho_bench_config:get(eleveleddb_dir, "."),
|
||||||
Num = basho_bench_config:get(eleveleddb_num_instances, 1),
|
Num = basho_bench_config:get(eleveleddb_num_instances, 1),
|
||||||
?INFO("Starting up ~p eleveleddb instances under ~s .\n",
|
% ?INFO("Starting up ~p eleveleddb instances under ~s .\n",
|
||||||
[Num, BaseDir]),
|
% [Num, BaseDir]),
|
||||||
Refs = [begin
|
Refs = [begin
|
||||||
Dir = filename:join(BaseDir, "instance." ++ integer_to_list(N)),
|
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),
|
{ok, Ref} = leveled_bookie:book_start(Dir, 2000, 500000000),
|
||||||
Ref
|
Ref
|
||||||
end || N <- lists:seq(1, Num)],
|
end || N <- lists:seq(1, Num)],
|
||||||
|
@ -62,7 +62,7 @@ new(Id) ->
|
||||||
Instances = get_instances(),
|
Instances = get_instances(),
|
||||||
Count = size(Instances),
|
Count = size(Instances),
|
||||||
Idx = ((Id - 1) rem Count) + 1,
|
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)},
|
State = #state{instance = element(Idx, Instances)},
|
||||||
{ok, State}.
|
{ok, State}.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue