leveled/rebar.config
Martin Sumner 69e8b29d1f
Mas d34 leveled.i459 partialmerge (#460)
* Add test to replicate issue 459

Nothing actually crashes due to the issue - but looking at the logs there is the polarised stats associated with the issue.  When  merging into L3, you would normally expect to merge into 4 files - but actually we see FileCounter occasionally spiking.

* Add partial merge support

There is a `max_mergebelow` size which can be a positive integer, or infinity.  It defaults to 32.

If a merge from Level N covers less than `max_mergebelow` files in level N + 1 - the merge will proceesd as before.  If it has >= `max_mergebelow`, the merge will be curtailed when `max_mergebelow div 2` files have been created at that level.  The remainder for Level N will then be written, as well as for Level N + 1 up to the next whole file that has no yet been touched by the merge.

The backlog that prompted the merge will still exist - as the files in Level N have not been changed.  However, it is likely the next file picked will not be the same one, and will in probability have a lower number of files to merge (as the average is =< 8).

This will stop progress from being halted by long merge jobs, as they will exit out in a safe way after partial completion.  In the case where the majority of files covered  do not require a merge, then those files will be skipped the next time the remainder file is picked up for merge at Level N
2024-11-30 13:16:13 +00:00

39 lines
1.3 KiB
Erlang

{minimum_otp_vsn, "22.3"}.
{xref_checks,
[undefined_function_calls,undefined_functions,
locals_not_used,
deprecated_function_calls, deprecated_functions]}.
{cover_excl_mods,
[testutil,
appdefined_SUITE, basic_SUITE, iterator_SUITE,
perf_SUITE, recovery_SUITE, riak_SUITE, tictac_SUITE]}.
{eunit_opts, [verbose]}.
{project_plugins, [
{eqwalizer_rebar3, {git_subdir, "https://github.com/OpenRiak/eqwalizer.git", {branch, "openriak-3.4"}, "eqwalizer_rebar3"}}
]}.
{profiles,
[{eqc, [{deps, [meck, fqc]},
{erl_opts, [debug_info, {d, 'EQC'}]},
{extra_src_dirs, ["test/property", "test/end_to_end"]},
{shell, [{apps, [lz4]}]},
{plugins, [rebar_eqc]}
]},
{test, [{extra_src_dirs, ["test/end_to_end", "test/property"]}
]},
{perf_full, [{erl_opts, [{d, performance, riak_fullperf}]}]},
{perf_mini, [{erl_opts, [{d, performance, riak_miniperf}]}]},
{perf_prof, [{erl_opts, [{d, performance, riak_profileperf}]}]}
]}.
{deps, [
{lz4, ".*", {git, "https://github.com/nhs-riak/erlang-lz4", {branch, "nhse-develop-3.4"}}},
{zstd, ".*", {git, "https://github.com/nhs-riak/zstd-erlang", {branch, "nhse-develop"}}},
{eqwalizer_support, {git_subdir, "https://github.com/OpenRiak/eqwalizer.git", {branch, "openriak-3.4"}, "eqwalizer_support"}}
]}.
{ct_opts, [{dir, ["test/end_to_end"]}]}.