From: Joshua Baergen Date: Tue, 20 Feb 2024 21:04:19 +0000 (-0700) Subject: kv/RocksDBStore: Configure compact-on-deletion for all CFs X-Git-Tag: testing/wip-batrick-testing-20240411.154038~128^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=e31c7249b3984d40fd0c2abfef1d2402112ed655;p=ceph-ci.git 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 --- 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; }