From e31c7249b3984d40fd0c2abfef1d2402112ed655 Mon Sep 17 00:00:00 2001 From: Joshua Baergen Date: Tue, 20 Feb 2024 14:04:19 -0700 Subject: [PATCH] kv/RocksDBStore: Configure compact-on-deletion for all CFs update_column_family_options() is called only for non-default CFs, whereas load_rocksdb_options() sets options for all CFs, including default. This isn't really a problem for new installs, where the default CF isn't used for very much, but for upgrades where resharding has not yet happened, the bulk of rocksdb data is still in the default CF and so it's important that it also gets compact-on-deletion configured, if desired. Fixes: https://tracker.ceph.com/issues/64511 Signed-off-by: Joshua Baergen --- src/kv/RocksDBStore.cc | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/kv/RocksDBStore.cc b/src/kv/RocksDBStore.cc index fd2b26f3803..28217118609 100644 --- a/src/kv/RocksDBStore.cc +++ b/src/kv/RocksDBStore.cc @@ -585,6 +585,14 @@ int RocksDBStore::load_rocksdb_options(bool create_if_missing, rocksdb::Options& if (cct->_conf.get_val("rocksdb_metadata_block_size") > 0) bbt_opts.metadata_block_size = cct->_conf.get_val("rocksdb_metadata_block_size"); + // Set Compact on Deletion Factory + if (cct->_conf->rocksdb_cf_compact_on_deletion) { + size_t sliding_window = cct->_conf->rocksdb_cf_compact_on_deletion_sliding_window; + size_t trigger = cct->_conf->rocksdb_cf_compact_on_deletion_trigger; + opt.table_properties_collector_factories.emplace_back( + rocksdb::NewCompactOnDeletionCollectorFactory(sliding_window, trigger)); + } + opt.table_factory.reset(rocksdb::NewBlockBasedTableFactory(bbt_opts)); dout(10) << __func__ << " block size " << cct->_conf->rocksdb_block_size << ", block_cache size " << byte_u_t(block_cache_size) @@ -934,14 +942,6 @@ int RocksDBStore::update_column_family_options(const std::string& base_name, return r; } } - - // Set Compact on Deletion Factory - if (cct->_conf->rocksdb_cf_compact_on_deletion) { - size_t sliding_window = cct->_conf->rocksdb_cf_compact_on_deletion_sliding_window; - size_t trigger = cct->_conf->rocksdb_cf_compact_on_deletion_trigger; - cf_opt->table_properties_collector_factories.emplace_back( - rocksdb::NewCompactOnDeletionCollectorFactory(sliding_window, trigger)); - } return 0; } -- 2.39.5