Skip to content

Commit

Permalink
kv/RocksDBStore: Configured compact-on-deletion for all CFs
Browse files Browse the repository at this point in the history
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 <jbaergen@digitalocean.com>
  • Loading branch information
Joshua Baergen committed Feb 20, 2024
1 parent 0455da2 commit 45fb188
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions src/kv/RocksDBStore.cc
Original file line number Diff line number Diff line change
Expand Up @@ -585,6 +585,14 @@ int RocksDBStore::load_rocksdb_options(bool create_if_missing, rocksdb::Options&
if (cct->_conf.get_val<Option::size_t>("rocksdb_metadata_block_size") > 0)
bbt_opts.metadata_block_size = cct->_conf.get_val<Option::size_t>("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)
Expand Down Expand Up @@ -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;
}

Expand Down

0 comments on commit 45fb188

Please sign in to comment.