Skip to content

Commit

Permalink
db_bench: fix for issue speedb-io#290
Browse files Browse the repository at this point in the history
Changed db_bench so that when using multiple databases (num_multi_db > 1) we only destroy databases that were used for the current group (databases specified in dbs_to_use).
  • Loading branch information
andy-byers committed Jan 23, 2023
1 parent fa31dd3 commit 58312c1
Showing 1 changed file with 12 additions and 10 deletions.
22 changes: 12 additions & 10 deletions tools/db_bench_tool.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2941,7 +2941,6 @@ class Benchmark {
}

void OpenAllDbs(Options options) {
assert(dbs_.empty());
assert(FLAGS_num_multi_db > 0);

// dbs_to_use_ is NOT initialized here since we open the db-s once for all
Expand All @@ -2953,6 +2952,9 @@ class Benchmark {
} else {
auto wal_dir = options.wal_dir;
for (int i = 0; i < FLAGS_num_multi_db; i++) {
if (dbs_[i].db || dbs_[i].opt_txn_db) {
continue;
}
if (!wal_dir.empty()) {
options.wal_dir = GetPathForMultiple(wal_dir, i);
}
Expand All @@ -2962,17 +2964,17 @@ class Benchmark {
}
}

void DestroyAllDbs() {
// Record the number of db-s as dbs_ is cleared inside DeleteDBs()
auto num_dbs = dbs_.size();

DeleteDBs();
void DestroyUsedDbs() {
for (auto i : db_idxs_to_use) {
dbs_[i].DeleteDBs();
}
dbs_to_use_.clear();

if (num_dbs == 1U) {
if (IsSingleDb()) {
DestroyDB(FLAGS_db, open_options_);
} else if (num_dbs > 1U) {
} else if (IsMultiDb()) {
Options options = open_options_;
for (auto i = 0U; i < num_dbs; ++i) {
for (auto i : db_idxs_to_use) {
if (!open_options_.wal_dir.empty()) {
options.wal_dir = GetPathForMultiple(open_options_.wal_dir, i);
}
Expand Down Expand Up @@ -4006,7 +4008,7 @@ class Benchmark {
"--use_existing_db",
name.c_str());
} else {
DestroyAllDbs();
DestroyUsedDbs();
Open(&open_options_); // use open_options for the last accessed
// There are new DB-s => Re-initialize dbs_to_use_
InitDbsToUse();
Expand Down

0 comments on commit 58312c1

Please sign in to comment.