Ensure recreated tables use the same settings as ones made at boot

This commit is contained in:
John Sully 2022-04-27 23:38:55 +00:00
parent b011bcbe93
commit 343c47a935
3 changed files with 17 additions and 7 deletions

View File

@ -132,7 +132,8 @@ size_t RocksDBStorageProvider::clear()
auto strName = m_spcolfamily->GetName(); auto strName = m_spcolfamily->GetName();
rocksdb::ColumnFamilyHandle *handle = nullptr; 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<rocksdb::ColumnFamilyHandle>(handle); m_spcolfamily = std::shared_ptr<rocksdb::ColumnFamilyHandle>(handle);
if (!status.ok()) if (!status.ok())

View File

@ -24,6 +24,8 @@ public:
virtual size_t filedsRequired() const override; virtual size_t filedsRequired() const override;
std::string getTempFolder(); std::string getTempFolder();
rocksdb::Options RocksDbOptions();
private: private:
void setVersion(rocksdb::ColumnFamilyHandle*); void setVersion(rocksdb::ColumnFamilyHandle*);
}; };

View File

@ -39,6 +39,17 @@ IStorageFactory *CreateRocksDBStorageFactory(const char *path, int dbnum, const
return new RocksDBStorageFactory(path, dbnum, rgchConfig, cchConfig); 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) RocksDBStorageFactory::RocksDBStorageFactory(const char *dbfile, int dbnum, const char *rgchConfig, size_t cchConfig)
: m_path(dbfile) : m_path(dbfile)
{ {
@ -56,14 +67,10 @@ RocksDBStorageFactory::RocksDBStorageFactory(const char *dbfile, int dbnum, cons
m_pfilemanager = std::shared_ptr<rocksdb::SstFileManager>(rocksdb::NewSstFileManager(rocksdb::Env::Default())); m_pfilemanager = std::shared_ptr<rocksdb::SstFileManager>(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; rocksdb::DB *db = nullptr;
auto options = RocksDbOptions();
for (int idb = 0; idb < dbnum; ++idb) for (int idb = 0; idb < dbnum; ++idb)
{ {
rocksdb::ColumnFamilyOptions cf_options(options); rocksdb::ColumnFamilyOptions cf_options(options);