Commit graph

1628 commits

Author SHA1 Message Date
Martin Sumner
a0e9ac737c
Mas i340 doublel3 d31 (#347)
* Double size of L4 files

And double max efficient size of leveled_ebloom

* Revert penciller shape

But expand file size at L3

* More concise version

Following code review

* OTP 24 dialyzer fix

Bindings intended to match - so don't use underscore

* Allow eqc tests to work from `rebar3 as eqc shell`

Then `eqc:quickcheck(leveled_statemeqc:prop_db()).`

Plus markdown tidy
2021-08-23 17:18:45 +01:00
Martin Sumner
507bf63e22
Address issue with comment (#349)
https://github.com/martinsumner/leveled/issues/269
2021-08-10 13:11:09 +01:00
Martin Sumner
ec52b16cfd
Make deletion confirmation an async message (#344)
Currently a sync call is made from cdb to inker wen confirming deletion (checking no snapshots have an outstanding requirement to access the file), whereas an async call is made from sst to penciller to achieve the same thing.

Due to the potential of timeouts and crashes - the cdb/inker delete confirmation process is now based on async message passing, making it consistent with the sst/penciller delete confirmation process.
2021-07-27 17:06:07 +01:00
Martin Sumner
2cb87f3a6e
Develop 3.1 eqc (#339)
* Add EQC profile

Don't run EQC tests, unless specifically requested e.g. `./rebar3 as eqc eunit --module=leveled_eqc`

* Remove eqc_cover parse_transform

Causes a compilation issue with the assertException in leveled_runner

* Allow EQC test to compile

EQC only works on OTP 22 for now, but other tests should still work on OTP 22 and OTP 24

* Add more complex statem based eqc test

* Add check for eqc profile
2021-05-26 17:40:09 +01:00
Martin Sumner
46ebc6f8ff
Update CI Badge (#337)
* Update README.md

* Update README.md

* Update README.md

* Update README.md
2021-05-25 14:26:47 +01:00
Martin Sumner
ed0301e2cf
Mas i335 otp24 (#336)
* Address OTP24 warnings, ct and eunit paths

* Reorg to add OTP 24 support

* Update VOLUME.md

* Correct broken refs

* Update README.md

* CI on all main branches

Co-authored-by: Ulf Wiger <ulf@wiger.net>
2021-05-25 13:41:20 +01:00
Martin Sumner
2c53c0a85a
Merge pull request #332 from martinsumner/mas-i331-gha
Switch to GHA
2021-03-05 15:10:24 +00:00
Martin Sumner
f726f81bde Switch to GHA 2021-03-05 14:47:42 +00:00
Martin Sumner
489d89fb16
Merge pull request #330 from martinsumner/mas-i329-lz4dep
Add lz4 dep
2021-03-03 13:54:08 +00:00
Martin Sumner
d8be8d4ace Add lz4 dep 2021-03-02 14:21:13 +00:00
Martin Sumner
71ba64ea53
Merge pull request #328 from martinsumner/mas-i326-loopstateref
Change references to loop state records
2021-01-11 13:26:14 +00:00
Martin Sumner
9157de680e Change refernces to loop state records
Resolve issue with OTP 22 performance https://github.com/martinsumner/leveled/issues/326 - by changing refernces to loop state.

The test perf_SUITE proves the issue.

OTP 22, without fixes:

Fold pre-close 41209 ms post-close 688 ms

OTP 22, with fixes:

Fold pre-close 401 ms post-close 317 ms
2021-01-11 10:39:34 +00:00
Martin Sumner
142efbcee6
Merge pull request #327 from martinsumner/mas-i326-controlpcache
Allow lower penciller cache sizes to be enforced
2020-12-22 12:34:53 +00:00
Martin Sumner
b8d71023a8 Allow lower penciller cache sizes to be enforced
It might be necessary to have a low penciller cache size.  however, currently the upper bound of that cache size can be very high, even when a low cache size is set.  This is due to the coin tossing done to prevent co-ordination of L0 persistence across parallel instances of leveled.

The aim here is reduce that upper bound, so that any environment having problems due to lack of memory or https://github.com/martinsumner/leveled/issues/326 can more stricly enforce a lower maximum in the penciller cache size
2020-12-22 12:34:01 +00:00
Martin Sumner
182395ee00 Schema clarifications 2020-12-09 09:18:38 +00:00
Martin Sumner
186e3868a9
Merge pull request #325 from martinsumner/mas-i321-checkactive
Mas i321 checkactive
2020-12-08 16:33:05 +00:00
Martin Sumner
3b305e0adb
Merge pull request #320 from martinsumner/mas-i319-cachescores
Allow for caching of compaction scores
2020-12-07 00:00:40 +00:00
Martin Sumner
eeeb7498c0 Review feedback
Also add types to try and help avoid further confusion
2020-12-04 19:40:28 +00:00
Martin Sumner
7bf67563ef
Update src/leveled_iclerk.erl
Co-authored-by: Thomas Arts <thomas.arts@quviq.com>
2020-12-04 14:31:47 +00:00
Martin Sumner
108527a8d9 is_active check within fold
Not within the fold fun of the leveled_runner.

This should avoid constantly having to re-merge and filter the penciller memory when running list_buckets and hitting inactive keys
2020-12-04 12:49:17 +00:00
Martin Sumner
f3f574de02 Switch to checking on get_kvrange
In production scale testing, placing te check_modified call on get_kvrange not get_slots made the performance difference.

It should help in get_lots as well, but unable to reliably get coverage in tests with this.  So for now, will leave off until a proper test can be constructed which demonstrates any benefits.
2020-12-03 13:37:22 +00:00
Martin Sumner
a210aa6846 Promote cache when scanning
When scanning over a leveled store with a helper (e.g. segment filter and last modified date range), applying the filter will speed up the query when the block index cache is available to get_slots.

If it is not available, previously the leveled_sst did not then promote the cache after it had accessed the underlying blocks.

Now the code does this, and also when the cache has all been added, it extracts the largest last modified date so that sst files older than the passed in date can be immediately dismissed
2020-12-02 13:29:50 +00:00
Martin Sumner
80e6920d6c Standardise retention decision
Use the same function to decide for both scoring and compaction - and avoid the situation where somethig is scored for cmpaction, but doesnt change (which was the case previously with tombstones that were still in the ledger).
2020-11-29 15:43:29 +00:00
Martin Sumner
00823584ec Improve the quality of score
Move the average towards the current score if not scoring each run.   Score from more keys to get a better score (as overheads of scoring are now better sorted by setting score_onein rather than by reducing the sample size).
2020-11-27 20:03:44 +00:00
Martin Sumner
bcc331da10 Set max limit of 24 hours on cached score 2020-11-27 13:56:47 +00:00
Martin Sumner
be562c85cb Don't hide option 2020-11-27 03:12:35 +00:00
Martin Sumner
0690136ab2 Clarify how the new option will be controlled in Riak 2020-11-27 03:01:38 +00:00
Martin Sumner
b4c79caf7a Allow for caching of compaction scores
Potentially reduce the overheads of scoring each file on every run.

The change also alters the default thresholds for compaction to favour longer runs (which will tend towards greater storage efficiency).
2020-11-27 02:35:27 +00:00
Martin Sumner
e3bcd7eaec Update rebar.config
Add support for OTP 24
2020-09-22 12:09:17 +01:00
Martin Sumner
bf591a5aa9 Merge branch 'develop-3.0' of https://github.com/martinsumner/leveled into develop-3.0 2020-08-18 14:16:33 +01:00
Martin Sumner
d5df808a91 Use tag for release 2020-08-18 14:16:28 +01:00
Martin Sumner
48aad689f4
Update FUTURE.md
Confirm previous list of needs for production readiness have now been met
2020-08-18 14:10:28 +01:00
Martin Sumner
5bc137e4ef
Merge pull request #317 from martinsumner/mas-i1765-reducelog
Reduce logging
2020-08-05 19:42:22 +01:00
Martin Sumner
dd5b22a71e Reduce logging
Otherwise erlang.log with default settings my cycle too fast for a long indexer
2020-08-05 18:54:13 +01:00
Martin Sumner
37f006bba1
Merge pull request #315 from martinsumner/mas-i1765-reducelog
Mas i1765 reducelog
2020-07-23 14:14:04 +01:00
Martin Sumner
a6bd151d58 Use git tag for version 2020-07-23 14:03:21 +01:00
Martin Sumner
5cc281b73a Drop P0039 log to debug
Logging 80 times per second in some Riak tests
2020-07-23 14:00:59 +01:00
Martin Sumner
963a921f9b OTP 23 support 2020-07-23 11:45:42 +01:00
Martin Sumner
5e32b1d085
Merge pull request #313 from martinsumner/mas-v922-bump
Update leveled.app.src
2020-06-18 13:40:49 +01:00
Martin Sumner
35167e3796
Update leveled.app.src
Bump version
2020-06-18 13:20:49 +01:00
Martin Sumner
4caefcf4aa Merge branch 'master' into develop-3.0 2020-04-09 12:23:42 +01:00
Martin Sumner
9412e7c9b0
Merge pull request #312 from martinsumner/mas-i311-mergeselector
Mas i311 mergeselector
2020-04-02 12:25:32 +01:00
Martin Sumner
312fc52832 Extend test to make it highly likely a "garbage" merge file choice is made 2020-03-31 09:33:50 +01:00
Martin Sumner
d05a5fdd46 Make grooming more accurate
Check more files to optimise grooming choices
2020-03-30 20:07:48 +01:00
Martin Sumner
9e56bfa947 Merge branch 'master' into mas-i311-mergeselector 2020-03-30 20:07:05 +01:00
Martin Sumner
febdac27f6
Merge pull request #310 from martinsumner/mas-i306-implementrecalc
Mas i306 implementrecalc
2020-03-30 20:06:48 +01:00
Martin Sumner
9838e255d2 Address review comments
More efficient traversal of list to score.
2020-03-29 20:02:21 +01:00
Martin Sumner
28c88ef8b8 Typo 2020-03-27 20:09:03 +00:00
Martin Sumner
42eb5f56bc Merge branch 'master' into mas-i311-mergeselector 2020-03-27 17:11:18 +00:00
Martin Sumner
da97d65a23 Add grooming compactions
Make half of LSM-tree compactions grooming compactions i.e. compactions biased towards merging files with large numbers of tombstones.
2020-03-27 15:09:48 +00:00