
With basic ct test. Doesn't currently prove expiry of index. Doesn't prove ability to find segments. Assumes that either "all" buckets or a special list of buckets require indexing this way. Will lead to unexpected results if the same bucket name is used across different Tags. The format of the index has been chosen so that hopeully standard index features can be used (e.g. return_terms).
101 lines
No EOL
3.8 KiB
Erlang
101 lines
No EOL
3.8 KiB
Erlang
|
|
%% Tag to be used on standard Riak KV objects
|
|
-define(RIAK_TAG, o_rkv).
|
|
%% Tag to be used on K/V objects for non-Riak purposes
|
|
-define(STD_TAG, o).
|
|
%% Tag used for secondary index keys
|
|
-define(IDX_TAG, i).
|
|
|
|
%% Inker key type used for 'normal' objects
|
|
-define(INKT_STND, stnd).
|
|
%% Inker key type used for objects which contain no value, only key changes
|
|
%% This is used currently for objects formed under a 'retain' strategy on Inker
|
|
%% compaction, but could be used for special set-type objects
|
|
-define(INKT_KEYD, keyd).
|
|
%% Inker key type used for tombstones
|
|
-define(INKT_TOMB, tomb).
|
|
|
|
-define(CACHE_TYPE, skpl).
|
|
|
|
-record(sft_options,
|
|
{wait = true :: boolean(),
|
|
expire_tombstones = false :: boolean(),
|
|
penciller :: pid()}).
|
|
|
|
-record(level,
|
|
{level :: integer(),
|
|
is_basement = false :: boolean(),
|
|
timestamp :: integer()}).
|
|
|
|
-record(manifest_entry,
|
|
{start_key :: tuple(),
|
|
end_key :: tuple(),
|
|
owner :: pid()|list(),
|
|
filename :: string()}).
|
|
|
|
-record(cdb_options,
|
|
{max_size :: integer(),
|
|
file_path :: string(),
|
|
waste_path :: string(),
|
|
binary_mode = false :: boolean(),
|
|
sync_strategy = sync}).
|
|
|
|
-record(inker_options,
|
|
{cdb_max_size :: integer(),
|
|
root_path :: string(),
|
|
cdb_options :: #cdb_options{},
|
|
start_snapshot = false :: boolean(),
|
|
source_inker :: pid(),
|
|
reload_strategy = [] :: list(),
|
|
waste_retention_period :: integer(),
|
|
max_run_length}).
|
|
|
|
-record(penciller_options,
|
|
{root_path :: string(),
|
|
max_inmemory_tablesize :: integer(),
|
|
start_snapshot = false :: boolean(),
|
|
snapshot_query,
|
|
bookies_mem :: tuple(),
|
|
source_penciller :: pid(),
|
|
snapshot_longrunning = true :: boolean(),
|
|
levelzero_cointoss = false :: boolean()}).
|
|
|
|
-record(iclerk_options,
|
|
{inker :: pid(),
|
|
max_run_length :: integer(),
|
|
cdb_options = #cdb_options{} :: #cdb_options{},
|
|
waste_retention_period :: integer(),
|
|
reload_strategy = [] :: list()}).
|
|
|
|
-record(recent_aae, {buckets :: list()|all,
|
|
% whitelist of buckets to support recent recent AAE
|
|
% or all to support all buckets
|
|
|
|
limit_minutes :: integer(),
|
|
% how long to retain entries the temporary index for
|
|
% It will actually be retained for limit + unit minutes
|
|
% 60 minutes seems sensible
|
|
|
|
unit_minutes :: integer(),
|
|
% What the minimum unit size will be for a query
|
|
% e.g. the minimum time duration to be used in range
|
|
% queries of the aae index
|
|
% 5 minutes seems sensible
|
|
|
|
tree_size = small :: atom()
|
|
% Just defaulted to small for now
|
|
}).
|
|
|
|
-record(r_content, {
|
|
metadata,
|
|
value :: term()
|
|
}).
|
|
|
|
-record(r_object, {
|
|
bucket,
|
|
key,
|
|
contents :: [#r_content{}],
|
|
vclock,
|
|
updatemetadata=dict:store(clean, true, dict:new()),
|
|
updatevalue :: term()}).
|
|
|