Commit Graph

42 Commits

Author SHA1 Message Date
ieQu1 330a255c3b chore: Add callback definitions to local_store 2023-05-15 12:05:18 +02:00
ieQu1 e7f773b6ae chore: behavior -> behaviour 2023-05-15 11:39:48 +02:00
ieQu1 62c27677b2 chore: Change license to BSL 2023-05-15 11:21:57 +02:00
ieQu1 f79dd16672 refactor(replay): zone -> shard
Also bump erlang-rocksdb version
2023-05-15 11:21:57 +02:00
Andrew Mayorov cfd23d76d3
test(replay): verify preserve / restore works with stored iterators 2023-04-10 15:27:49 +03:00
Andrew Mayorov 1f033f92b5
feat(replay): allow to preserve / restore iterators in the db
So that we could guarantee replay consistency / availability under
the assumption that nodes may be restarted or even lost occasionally.
2023-04-10 15:27:49 +03:00
Andrew Mayorov 3c13dd38f6
feat: make `create_generation` safer against bad input 2023-01-18 11:11:49 +03:00
Andrew Mayorov 418ecbcbbc
feat: make iteration fully generation-aware 2023-01-18 11:11:49 +03:00
Andrew Mayorov e42f009d3f
chore: simplify iteration-related typespecs 2023-01-18 11:11:49 +03:00
Andrew Mayorov 4e36456843
feat: allow to create new storage generations 2023-01-18 11:11:46 +03:00
Andrew Mayorov 16736eca0f
fix: correct typespec 2023-01-16 20:18:23 +03:00
Andrew Mayorov 464db76a52
feat: wire iteration options up to the app config 2023-01-16 20:18:22 +03:00
Andrew Mayorov d950efc9fa
test: split unit tests off into a full-fledged suite 2023-01-12 17:59:55 +03:00
Andrew Mayorov b7566ab7e7
test: provide more general `keymapper_info/1` 2023-01-12 17:59:15 +03:00
Andrew Mayorov 0d495c97c8
chore: rename testsuite to reflect test subject better 2023-01-12 17:12:45 +03:00
Andrew Mayorov d504d415e6
feat: enable periodic iterator refresh
This might be helpful during replays taking multiple tens of seconds so
that underlying iterators won't hold onto in-memory / on-disk data
structures for too long, preventing rocksdb from recycling them.
2023-01-12 16:03:39 +03:00
Andrew Mayorov f338aeb3f2
refactor: use inline functions instead of macros where applicable 2023-01-11 18:45:21 +03:00
Andrew Mayorov d65112eeac
fix: clear bitmask of topic filter tail containing wildcards 2023-01-06 13:58:39 +03:00
Andrew Mayorov 41bfebf9e0
test: proptest that iteration is exhaustive
Compare iteration results against what an extremely simplified model
produces.
2023-01-06 13:58:39 +03:00
Andrew Mayorov 5e633321db
test: scale up number of messages per topic in proptests 2023-01-06 13:58:39 +03:00
Andrew Mayorov 43225d20a6
test: use `_build/test/proper` as a scratch dir for testruns 2023-01-06 13:58:38 +03:00
Andrew Mayorov aba48c488e
test: add a proptest on iterator preserve / restore
Which verifies that preservation and restoration of iterators does not
affect the outcome of an iteration (under the precondition that the
state of database is constant during an iteration).
2023-01-05 22:52:08 +03:00
Andrew Mayorov 7fd14fb404
feat: add an ability to preserve and restore iterators
This will allow to persist iteration state and to periodically recreate
iterators during long replays.
2023-01-05 22:48:10 +03:00
Andrew Mayorov d6ee23e5b3
test: move proptests into a separate module
Following conventions. Also add few proptests on keyspace filters.
2023-01-04 22:05:09 +03:00
Andrew Mayorov 4b8dbca232
refactor: introduce keyspace filter concept
So we could conveniently test it separately.
2023-01-04 22:02:53 +03:00
Andrew Mayorov d5941c568b
refactor: rename `compute_hash_*` → `compute_topic_*` 2023-01-03 18:53:19 +03:00
Andrew Mayorov bea0dc22eb
chore: drop few unused macrodefinitions 2023-01-03 18:30:43 +03:00
Andrew Mayorov e248a18fd4
chore: attempt to make `compute_next_seek`'s logic clearer 2023-01-03 18:29:06 +03:00
ieQu1 917c8635e1
fix(replay): Fix dialyzer warnings 2023-01-03 14:11:04 +03:00
ieQu1 cb97a9abd1
refactor(replay): tau -> epoch 2023-01-03 14:09:02 +03:00
ieQu1 a9c036b058
refactor(replay): Factor out configuration to a separate module 2023-01-03 14:08:55 +03:00
ieQu1 f5e2d2f66d
refactor(replay): Introduce bitwise_concat function 2023-01-03 14:08:47 +03:00
ieQu1 ff145ecc43
feat(replay): Add metadata storage and supervision tree 2023-01-03 14:08:40 +03:00
Andrew Mayorov 0cfeee0df7
feat: implement keyspace partitioning across time 2023-01-03 14:07:14 +03:00
Andrew Mayorov 83467e7174
feat: allow to specify message store options
* Keymapper
* Column family name + DB options
* DB write / read options
2023-01-03 14:07:12 +03:00
Andrew Mayorov 7e13753ea5
test: add basic property tests 2023-01-03 14:05:29 +03:00
Andrew Mayorov fcc8a4bcce
refactor: rename function consistently 2023-01-03 14:05:29 +03:00
Andrew Mayorov 8707504245
feat(iter): wildcard smoke tests 2023-01-03 14:05:29 +03:00
Andrew Mayorov 5e612c910c
feat(iter): wip interator next 2023-01-03 14:05:29 +03:00
ieQu1 d99a347654
test(rocksdb): Add testcase 2023-01-03 14:05:29 +03:00
ieQu1 3248f396e0
feat(rocksdb): WIP 2023-01-03 14:05:29 +03:00
Andrew Mayorov 52964e2bfa
feat(replay): storage layer wip 2023-01-03 14:05:23 +03:00