crash_test: cover concurrent memtable insert in default crash test

Summary: Default crash test uses prefix hash memtable, which is not compatible to concurrent memtable. Allow prefix test run with skip list and use skip list memtable when concurrent insert is used.

Test Plan: Run "python -u tools/db_crashtest.py whitebox" and watch sometimes skip list is used.

Reviewers: anthony, yhchiang, kradhakrishnan, andrewkr, IslamAbdelRahman

Reviewed By: IslamAbdelRahman

Subscribers: leveldb, dhruba

Differential Revision: https://reviews.facebook.net/D53907
main
sdong 9 years ago
parent a76e9093f0
commit 2608219cc9
  1. 1
      tools/db_crashtest.py
  2. 10
      tools/db_stress.cc

@ -134,6 +134,7 @@ def finalize_and_sanitize(src_params):
# --allow_concurrent_memtable_write with --filter_deletes is not supported. # --allow_concurrent_memtable_write with --filter_deletes is not supported.
if dest_params.get("allow_concurrent_memtable_write", 1) == 1: if dest_params.get("allow_concurrent_memtable_write", 1) == 1:
dest_params["filter_deletes"] = 0 dest_params["filter_deletes"] = 0
dest_params["memtablerep"] = "skip_list"
return dest_params return dest_params

@ -2008,11 +2008,17 @@ class StressTest {
FLAGS_allow_concurrent_memtable_write; FLAGS_allow_concurrent_memtable_write;
options_.enable_write_thread_adaptive_yield = options_.enable_write_thread_adaptive_yield =
FLAGS_enable_write_thread_adaptive_yield; FLAGS_enable_write_thread_adaptive_yield;
if ((FLAGS_prefix_size == 0) == (FLAGS_rep_factory == kHashSkipList)) {
if (FLAGS_prefix_size == 0 && FLAGS_rep_factory == kHashSkipList) {
fprintf(stderr, fprintf(stderr,
"prefix_size should be non-zero iff memtablerep == prefix_hash\n"); "prefeix_size cannot be zero if memtablerep == prefix_hash\n");
exit(1); exit(1);
} }
if (FLAGS_prefix_size != 0 && FLAGS_rep_factory != kHashSkipList) {
fprintf(stderr,
"WARNING: prefix_size is non-zero but "
"memtablerep != prefix_hash\n");
}
switch (FLAGS_rep_factory) { switch (FLAGS_rep_factory) {
case kSkipList: case kSkipList:
// no need to do anything // no need to do anything

Loading…
Cancel
Save