From 343c47a935965751bf8be09f3d54128c021b8f0e Mon Sep 17 00:00:00 2001 From: John Sully Date: Wed, 27 Apr 2022 23:38:55 +0000 Subject: [PATCH] Ensure recreated tables use the same settings as ones made at boot --- src/storage/rocksdb.cpp | 3 ++- src/storage/rocksdbfactor_internal.h | 2 ++ src/storage/rocksdbfactory.cpp | 19 +++++++++++++------ 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/storage/rocksdb.cpp b/src/storage/rocksdb.cpp index ebe41acc2..7d77cce53 100644 --- a/src/storage/rocksdb.cpp +++ b/src/storage/rocksdb.cpp @@ -132,7 +132,8 @@ size_t RocksDBStorageProvider::clear() auto strName = m_spcolfamily->GetName(); rocksdb::ColumnFamilyHandle *handle = nullptr; - m_spdb->CreateColumnFamily(rocksdb::ColumnFamilyOptions(), strName, &handle); + rocksdb::ColumnFamilyOptions cf_options(m_pfactory->RocksDbOptions()); + m_spdb->CreateColumnFamily(cf_options, strName, &handle); m_spcolfamily = std::shared_ptr(handle); if (!status.ok()) diff --git a/src/storage/rocksdbfactor_internal.h b/src/storage/rocksdbfactor_internal.h index 8a7df2cf5..11862bb7b 100644 --- a/src/storage/rocksdbfactor_internal.h +++ b/src/storage/rocksdbfactor_internal.h @@ -24,6 +24,8 @@ public: virtual size_t filedsRequired() const override; std::string getTempFolder(); + rocksdb::Options RocksDbOptions(); + private: void setVersion(rocksdb::ColumnFamilyHandle*); }; \ No newline at end of file diff --git a/src/storage/rocksdbfactory.cpp b/src/storage/rocksdbfactory.cpp index 8e6ecd0d5..701314d0f 100644 --- a/src/storage/rocksdbfactory.cpp +++ b/src/storage/rocksdbfactory.cpp @@ -39,6 +39,17 @@ IStorageFactory *CreateRocksDBStorageFactory(const char *path, int dbnum, const return new RocksDBStorageFactory(path, dbnum, rgchConfig, cchConfig); } +rocksdb::Options RocksDBStorageFactory::RocksDbOptions() +{ + rocksdb::Options options = DefaultRocksDBOptions(); + options.max_open_files = filedsRequired(); + options.sst_file_manager = m_pfilemanager; + options.create_if_missing = true; + options.create_missing_column_families = true; + options.info_log_level = rocksdb::ERROR_LEVEL; + return options; +} + RocksDBStorageFactory::RocksDBStorageFactory(const char *dbfile, int dbnum, const char *rgchConfig, size_t cchConfig) : m_path(dbfile) { @@ -56,14 +67,10 @@ RocksDBStorageFactory::RocksDBStorageFactory(const char *dbfile, int dbnum, cons m_pfilemanager = std::shared_ptr(rocksdb::NewSstFileManager(rocksdb::Env::Default())); - rocksdb::Options options = DefaultRocksDBOptions(); - options.max_open_files = filedsRequired(); - options.sst_file_manager = m_pfilemanager; - options.create_if_missing = true; - options.create_missing_column_families = true; - options.info_log_level = rocksdb::ERROR_LEVEL; rocksdb::DB *db = nullptr; + auto options = RocksDbOptions(); + for (int idb = 0; idb < dbnum; ++idb) { rocksdb::ColumnFamilyOptions cf_options(options);