Skip to content

Commit 909fc49

Browse files
committed
Fixing unreleased column_family ref when using options.ini for rocksdb
1 parent 2065661 commit 909fc49

2 files changed

Lines changed: 9 additions & 3 deletions

File tree

rocksdb/rocksdb_db.cc

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,6 @@ void RocksdbDB::Init() {
195195
rocksdb::Options opt;
196196
opt.create_if_missing = true;
197197
std::vector<rocksdb::ColumnFamilyDescriptor> cf_descs;
198-
std::vector<rocksdb::ColumnFamilyHandle *> cf_handles;
199198
GetOptions(props, &opt, &cf_descs);
200199
#ifdef USE_MERGEUPDATE
201200
opt.merge_operator.reset(new YCSBUpdateMerge);
@@ -211,14 +210,20 @@ void RocksdbDB::Init() {
211210
if (cf_descs.empty()) {
212211
s = rocksdb::DB::Open(opt, db_path, &db_);
213212
} else {
214-
s = rocksdb::DB::Open(opt, db_path, cf_descs, &cf_handles, &db_);
213+
s = rocksdb::DB::Open(opt, db_path, cf_descs, &cf_handles_, &db_);
215214
}
216215
if (!s.ok()) {
217216
throw utils::Exception(std::string("RocksDB Open: ") + s.ToString());
218217
}
219218
}
220219

221-
void RocksdbDB::Cleanup() {
220+
void RocksdbDB::Cleanup() {
221+
for (size_t i = 0; i < cf_handles_.size(); i++) {
222+
if (cf_handles_[i] != nullptr) {
223+
delete cf_handles_[i];
224+
cf_handles_[i] = nullptr;
225+
}
226+
}
222227
const std::lock_guard<std::mutex> lock(mu_);
223228
if (--ref_cnt_) {
224229
return;

rocksdb/rocksdb_db.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ class RocksdbDB : public DB {
9292

9393
int fieldcount_;
9494

95+
std::vector<rocksdb::ColumnFamilyHandle *> cf_handles_;
9596
static rocksdb::DB *db_;
9697
static int ref_cnt_;
9798
static std::mutex mu_;

0 commit comments

Comments
 (0)