
* Protect penciller from empty ledger cache updates which may occur when loading the ledger from the journal, after the ledger has been cleared. * Score caching and randomisation The test allkeydelta_journal_multicompact can occasionally fail when a compaction doesn't happen, but then does the next loop. Suspect this is as a result of score caching, randomisation of key grabs for scoring, plus jitter on size boundaries. Modified test for predictability. Plus formatting changes * Avoid small batches Avoid small batches due to large SQN gaps * Rationalise tests Two tests overlaps with the new, much broader, replace_everything/1 test. Ported over any remaining checks of interest and dropped two tests.
107 lines
4.9 KiB
Erlang
107 lines
4.9 KiB
Erlang
% File paths
|
|
-define(JOURNAL_FP, "journal").
|
|
-define(LEDGER_FP, "ledger").
|
|
-define(LOADING_BATCH, 1000).
|
|
|
|
%% 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).
|
|
%% Tag used for head-only objects
|
|
-define(HEAD_TAG, h).
|
|
|
|
%% Inker key type used for 'normal' objects
|
|
-define(INKT_STND, stnd).
|
|
%% Inker key type used for 'batch' objects
|
|
-define(INKT_MPUT, mput).
|
|
%% 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
|
|
-define(INKT_KEYD, keyd).
|
|
%% Inker key type used for tombstones
|
|
-define(INKT_TOMB, tomb).
|
|
|
|
-define(CACHE_TYPE, skpl).
|
|
|
|
-define(MAX_LEVELS, 8).
|
|
%% Should equal the length of the LEVEL_SCALEFACTOR
|
|
|
|
|
|
-record(level,
|
|
{level :: integer(),
|
|
is_basement = false :: boolean(),
|
|
timestamp :: integer()}).
|
|
|
|
-record(manifest_entry,
|
|
{start_key :: tuple() | undefined,
|
|
end_key :: tuple() | undefined,
|
|
owner :: pid()|list(),
|
|
filename :: string() | undefined,
|
|
bloom :: binary() | none | undefined}).
|
|
|
|
-record(cdb_options,
|
|
{max_size :: pos_integer() | undefined,
|
|
max_count :: pos_integer() | undefined,
|
|
file_path :: string() | undefined,
|
|
waste_path :: string() | undefined,
|
|
binary_mode = false :: boolean(),
|
|
sync_strategy = sync,
|
|
log_options = leveled_log:get_opts()
|
|
:: leveled_log:log_options(),
|
|
monitor = {no_monitor, 0} :: leveled_monitor:monitor()}).
|
|
|
|
-record(sst_options,
|
|
{press_method = native
|
|
:: leveled_sst:press_method(),
|
|
log_options = leveled_log:get_opts()
|
|
:: leveled_log:log_options(),
|
|
max_sstslots = 256 :: pos_integer(),
|
|
pagecache_level = 1 :: pos_integer(),
|
|
monitor = {no_monitor, 0} :: leveled_monitor:monitor()}).
|
|
|
|
-record(inker_options,
|
|
{cdb_max_size :: integer() | undefined,
|
|
root_path :: string() | undefined,
|
|
cdb_options = #cdb_options{} :: #cdb_options{},
|
|
start_snapshot = false :: boolean(),
|
|
bookies_pid :: pid() | undefined,
|
|
source_inker :: pid() | undefined,
|
|
reload_strategy = [] :: list(),
|
|
waste_retention_period :: integer() | undefined,
|
|
compression_method = native :: lz4|native,
|
|
compress_on_receipt = false :: boolean(),
|
|
max_run_length,
|
|
singlefile_compactionperc :: float()|undefined,
|
|
maxrunlength_compactionperc :: float()|undefined,
|
|
score_onein = 1 :: pos_integer(),
|
|
snaptimeout_long :: pos_integer() | undefined,
|
|
monitor = {no_monitor, 0} :: leveled_monitor:monitor()}).
|
|
|
|
-record(penciller_options,
|
|
{root_path :: string() | undefined,
|
|
sst_options = #sst_options{} :: #sst_options{},
|
|
max_inmemory_tablesize :: integer() | undefined,
|
|
start_snapshot = false :: boolean(),
|
|
snapshot_query,
|
|
bookies_pid :: pid() | undefined,
|
|
bookies_mem :: tuple() | undefined,
|
|
source_penciller :: pid() | undefined,
|
|
snapshot_longrunning = true :: boolean(),
|
|
compression_method = native :: lz4|native,
|
|
levelzero_cointoss = false :: boolean(),
|
|
snaptimeout_short :: pos_integer() | undefined,
|
|
snaptimeout_long :: pos_integer() | undefined,
|
|
monitor = {no_monitor, 0} :: leveled_monitor:monitor()}).
|
|
|
|
-record(iclerk_options,
|
|
{inker :: pid() | undefined,
|
|
max_run_length :: integer() | undefined,
|
|
cdb_options = #cdb_options{} :: #cdb_options{},
|
|
waste_retention_period :: integer() | undefined,
|
|
compression_method = native :: lz4|native,
|
|
singlefile_compactionperc :: float()|undefined,
|
|
maxrunlength_compactionperc :: float()|undefined,
|
|
score_onein = 1 :: pos_integer(),
|
|
reload_strategy = [] :: list()}).
|