add FIFO compaction for persistent-cache descriptor; comments/cleanup

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk 2025-03-15 01:23:54 +00:00
parent a57336ec13
commit 17003ba773
4 changed files with 46 additions and 17 deletions

View file

@ -1,8 +1,8 @@
use conduwuit::{Config, Result, err, utils::math::Expected};
use rocksdb::{
BlockBasedIndexType, BlockBasedOptions, BlockBasedPinningTier, Cache,
DBCompressionType as CompressionType, DataBlockIndexType, LruCacheOptions, Options,
UniversalCompactOptions, UniversalCompactionStopStyle,
DBCompressionType as CompressionType, DataBlockIndexType, FifoCompactOptions,
LruCacheOptions, Options, UniversalCompactOptions, UniversalCompactionStopStyle,
};
use super::descriptor::{CacheDisp, Descriptor};
@ -16,7 +16,7 @@ pub(super) const SENTINEL_COMPRESSION_LEVEL: i32 = 32767;
pub(crate) fn cf_options(ctx: &Context, opts: Options, desc: &Descriptor) -> Result<Options> {
let cache = get_cache(ctx, desc);
let config = &ctx.server.config;
descriptor_cf_options(opts, desc.clone(), config, cache.as_ref())
descriptor_cf_options(opts, *desc, config, cache.as_ref())
}
fn descriptor_cf_options(
@ -46,6 +46,7 @@ fn descriptor_cf_options(
opts.set_compaction_style(desc.compaction);
opts.set_compaction_pri(desc.compaction_pri);
opts.set_universal_compaction_options(&uc_options(&desc));
opts.set_fifo_compaction_options(&fifo_options(&desc));
let compression_shape: Vec<_> = desc
.compression_shape
@ -142,6 +143,13 @@ fn set_compression(desc: &mut Descriptor, config: &Config) {
}
}
fn fifo_options(desc: &Descriptor) -> FifoCompactOptions {
let mut opts = FifoCompactOptions::default();
opts.set_max_table_files_size(desc.limit_size);
opts
}
fn uc_options(desc: &Descriptor) -> UniversalCompactOptions {
let mut opts = UniversalCompactOptions::default();
opts.set_stop_style(UniversalCompactionStopStyle::Total);