Fix problem with create_if_missing option when wal_dir is used
Summary: When wal_dir is used, DestroyDB is not passed the wal_dir option and so we get a Corruption exception. Test Plan: Verified manually that the following command line works now: ./db_bench --db=/mnt/db/rocksdb ... --disable_wal=0 --wal_dir=/data/users/rocksdb/WAL... --benchmarks=filluniquerandom --use_existing_db=0... Reviewers: sdong Reviewed By: sdong Subscribers: dhruba, leveldb Differential Revision: https://reviews.facebook.net/D29859
This commit is contained in:
parent
2871bc7bc8
commit
635c61fd3b
@ -1367,11 +1367,13 @@ class Benchmark {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Run() {
|
void Run() {
|
||||||
|
Options open_options; // keep options around to properly destroy db later
|
||||||
|
|
||||||
if (!SanityCheck()) {
|
if (!SanityCheck()) {
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
PrintHeader();
|
PrintHeader();
|
||||||
Open();
|
Open(&open_options);
|
||||||
const char* benchmarks = FLAGS_benchmarks.c_str();
|
const char* benchmarks = FLAGS_benchmarks.c_str();
|
||||||
while (benchmarks != nullptr) {
|
while (benchmarks != nullptr) {
|
||||||
const char* sep = strchr(benchmarks, ',');
|
const char* sep = strchr(benchmarks, ',');
|
||||||
@ -1532,15 +1534,15 @@ class Benchmark {
|
|||||||
delete db_.db;
|
delete db_.db;
|
||||||
db_.db = nullptr;
|
db_.db = nullptr;
|
||||||
db_.cfh.clear();
|
db_.cfh.clear();
|
||||||
DestroyDB(FLAGS_db, Options());
|
DestroyDB(FLAGS_db, open_options);
|
||||||
}
|
}
|
||||||
for (size_t i = 0; i < multi_dbs_.size(); i++) {
|
for (size_t i = 0; i < multi_dbs_.size(); i++) {
|
||||||
delete multi_dbs_[i].db;
|
delete multi_dbs_[i].db;
|
||||||
DestroyDB(GetDbNameForMultiple(FLAGS_db, i), Options());
|
DestroyDB(GetDbNameForMultiple(FLAGS_db, i), open_options);
|
||||||
}
|
}
|
||||||
multi_dbs_.clear();
|
multi_dbs_.clear();
|
||||||
}
|
}
|
||||||
Open();
|
Open(&open_options); // use open_options for the last accessed
|
||||||
}
|
}
|
||||||
|
|
||||||
if (method != nullptr) {
|
if (method != nullptr) {
|
||||||
@ -1832,9 +1834,11 @@ class Benchmark {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Open() {
|
void Open(Options* opts) {
|
||||||
|
Options& options = *opts;
|
||||||
|
|
||||||
assert(db_.db == nullptr);
|
assert(db_.db == nullptr);
|
||||||
Options options;
|
|
||||||
options.create_if_missing = !FLAGS_use_existing_db;
|
options.create_if_missing = !FLAGS_use_existing_db;
|
||||||
options.create_missing_column_families = FLAGS_num_column_families > 1;
|
options.create_missing_column_families = FLAGS_num_column_families > 1;
|
||||||
options.db_write_buffer_size = FLAGS_db_write_buffer_size;
|
options.db_write_buffer_size = FLAGS_db_write_buffer_size;
|
||||||
|
Loading…
Reference in New Issue
Block a user