Add support for in place update for db_stress
Summary: Added two flags which operate as follows: in_place_update: enable in_place_update for default column family set_in_place_one_in: toggles the value of the option inplace_update_support with a probability of 1/N Test Plan: Run db_stress with the two flags above set. Specifically tried in_place_update set to true and set_in_place_one_in set to 10,000. Reviewers: ljin, igor, sdong Reviewed By: sdong Subscribers: dhruba, leveldb Differential Revision: https://reviews.facebook.net/D28029
This commit is contained in:
parent
9f7fc3ac45
commit
7e01d12026
@ -194,6 +194,9 @@ DEFINE_int32(clear_column_family_one_in, 1000000,
|
||||
DEFINE_int32(set_options_one_in, 0,
|
||||
"With a chance of 1/N, change some random options");
|
||||
|
||||
DEFINE_int32(set_in_place_one_in, 0,
|
||||
"With a chance of 1/N, toggle in place support option");
|
||||
|
||||
DEFINE_int64(cache_size, 2 * KB * KB * KB,
|
||||
"Number of bytes to use as a cache of uncompressed data.");
|
||||
|
||||
@ -341,6 +344,8 @@ static const bool FLAGS_purge_redundant_percent_dummy __attribute__((unused)) =
|
||||
DEFINE_bool(filter_deletes, false, "On true, deletes use KeyMayExist to drop"
|
||||
" the delete if key not present");
|
||||
|
||||
DEFINE_bool(in_place_update, false, "On true, does inplace update in memtable");
|
||||
|
||||
enum RepFactory {
|
||||
kSkipList,
|
||||
kHashSkipList,
|
||||
@ -1362,6 +1367,11 @@ class StressTest {
|
||||
SetOptions(thread);
|
||||
}
|
||||
|
||||
if (FLAGS_set_in_place_one_in > 0 &&
|
||||
thread->rand.OneIn(FLAGS_set_in_place_one_in)) {
|
||||
options_.inplace_update_support ^= options_.inplace_update_support;
|
||||
}
|
||||
|
||||
if (!FLAGS_test_batches_snapshots &&
|
||||
FLAGS_clear_column_family_one_in != 0 && FLAGS_column_families > 1) {
|
||||
if (thread->rand.OneIn(FLAGS_clear_column_family_one_in)) {
|
||||
@ -1682,6 +1692,8 @@ class StressTest {
|
||||
FLAGS_purge_redundant_percent);
|
||||
fprintf(stdout, "Deletes use filter : %d\n",
|
||||
FLAGS_filter_deletes);
|
||||
fprintf(stdout, "Do update in place : %d\n",
|
||||
FLAGS_in_place_update);
|
||||
fprintf(stdout, "Num keys per lock : %d\n",
|
||||
1 << FLAGS_log2_keys_per_lock);
|
||||
|
||||
@ -1765,6 +1777,7 @@ class StressTest {
|
||||
options_.create_if_missing = true;
|
||||
options_.max_manifest_file_size = 10 * 1024;
|
||||
options_.filter_deletes = FLAGS_filter_deletes;
|
||||
options_.inplace_update_support = FLAGS_in_place_update;
|
||||
if ((FLAGS_prefix_size == 0) == (FLAGS_rep_factory == kHashSkipList)) {
|
||||
fprintf(stderr,
|
||||
"prefix_size should be non-zero iff memtablerep == prefix_hash\n");
|
||||
|
Loading…
Reference in New Issue
Block a user