Fix test in LITE mode (#6267)
Summary: Currently, the recently-added test DBTest2.SwitchMemtableRaceWithNewManifest fails in LITE mode since SetOptions() returns "Not supported". I do not want to put `#ifndef ROCKSDB_LITE` because it reduces test coverage. Instead, just trigger compaction on a different column family. The bg compaction thread calling LogAndApply() may race with thread calling SwitchMemtable(). Test Plan (dev server): make check OPT=-DROCKSDB_LITE make check or run DBTest2.SwitchMemtableRaceWithNewManifest 100 times. Pull Request resolved: https://github.com/facebook/rocksdb/pull/6267 Differential Revision: D19301309 Pulled By: riversand963 fbshipit-source-id: 88cedcca2f985968ed3bb234d324ffa2aa04ca50
This commit is contained in:
parent
bce5189f4d
commit
a8b1085ae2
@ -4255,9 +4255,17 @@ TEST_F(DBTest2, SwitchMemtableRaceWithNewManifest) {
|
|||||||
options.max_manifest_file_size = 10;
|
options.max_manifest_file_size = 10;
|
||||||
options.create_if_missing = true;
|
options.create_if_missing = true;
|
||||||
CreateAndReopenWithCF({"pikachu"}, options);
|
CreateAndReopenWithCF({"pikachu"}, options);
|
||||||
|
ASSERT_EQ(2, handles_.size());
|
||||||
|
|
||||||
ASSERT_OK(Put("foo", "value"));
|
ASSERT_OK(Put("foo", "value"));
|
||||||
|
const int kL0Files = options.level0_file_num_compaction_trigger;
|
||||||
|
for (int i = 0; i < kL0Files; ++i) {
|
||||||
|
ASSERT_OK(Put(/*cf=*/1, "a", std::to_string(i)));
|
||||||
|
ASSERT_OK(Flush(/*cf=*/1));
|
||||||
|
}
|
||||||
|
|
||||||
port::Thread thread([&]() { ASSERT_OK(Flush()); });
|
port::Thread thread([&]() { ASSERT_OK(Flush()); });
|
||||||
ASSERT_OK(dbfull()->SetOptions({{"prefix_extractor", "fixed:5"}}));
|
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
||||||
thread.join();
|
thread.join();
|
||||||
}
|
}
|
||||||
} // namespace rocksdb
|
} // namespace rocksdb
|
||||||
|
Loading…
Reference in New Issue
Block a user