-
-
Notifications
You must be signed in to change notification settings - Fork 34
Compaction filters #225
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Compaction filters #225
Conversation
558deaa to
d86e02f
Compare
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
35bc93e to
d7467c3
Compare
a388791 to
11e7363
Compare
|
I've added a |
|
I've been thinking of calling this "compaction mappers" instead of "compaction filters" because "filters" is already quite a loaded term (AMQ filters and filter() in Rust), while this operation is more akin to a filter_map really. |
|
In my opinion, "filter" would probably fit better in this case, but I'm fine with either name. Should I change it? |
I think it's fine either way |
CompactionFiltertrait which can elect to drop a kv or modify its valueItemAccessorforCompactionFilterwhich can access key/value within the compaction filterExpiredKvCallbacktoDroppedKvCallbacksince it's not really exclusively for "expired" anymoreCompactionStreamCompaction filters replace dropped KVs with a tombstone. If we are compacting to the last level, the tombstone will subsequently be removed by the
CompactionStream. If the value is changed, it is replaced in place or written out to a new blob file as necessary.Closes #159