From cda34dd64ab5d58394d3aa6bdc61def5ef204d23 Mon Sep 17 00:00:00 2001 From: Andrew Kryczka Date: Mon, 2 May 2022 16:19:00 -0700 Subject: [PATCH] Allow consecutive SingleDelete() in stress/crash test (#9930) Summary: We need to support consecutive SingleDelete(), so this PR adds it to the stress/crash tests. Pull Request resolved: https://github.com/facebook/rocksdb/pull/9930 Test Plan: `python3 tools/db_crashtest.py blackbox --simple --nooverwritepercent=50 --writepercent=90 --delpercent=10 --readpercent=0 --prefixpercent=0 --delrangepercent=0 --iterpercent=0 --max_key=1000000 --duration=3600 --interval=10 --write_buffer_size=1048576 --target_file_size_base=1048576 --max_bytes_for_level_base=4194304 --value_size_mult=33` Reviewed By: riversand963 Differential Revision: D36081863 Pulled By: ajkr fbshipit-source-id: 3566cdbaed375b8003126fc298968eb1a854317f --- db_stress_tool/no_batched_ops_stress.cc | 25 +++---------------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/db_stress_tool/no_batched_ops_stress.cc b/db_stress_tool/no_batched_ops_stress.cc index 75579d0ce..f764bb2b9 100644 --- a/db_stress_tool/no_batched_ops_stress.cc +++ b/db_stress_tool/no_batched_ops_stress.cc @@ -632,33 +632,14 @@ class NonBatchedOpsStressTest : public StressTest { Status TestDelete(ThreadState* thread, WriteOptions& write_opts, const std::vector& rand_column_families, const std::vector& rand_keys, - std::unique_ptr& lock) override { + std::unique_ptr& /* lock */) override { int64_t rand_key = rand_keys[0]; int rand_column_family = rand_column_families[0]; auto shared = thread->shared; - int64_t max_key = shared->GetMaxKey(); // OPERATION delete - // If the chosen key does not allow overwrite and it does not exist, - // choose another key. - std::string write_ts_str; - Slice write_ts; - while (!shared->AllowsOverwrite(rand_key) && - !shared->Exists(rand_column_family, rand_key)) { - lock.reset(); - rand_key = thread->rand.Next() % max_key; - rand_column_family = thread->rand.Next() % FLAGS_column_families; - lock.reset( - new MutexLock(shared->GetMutexForKey(rand_column_family, rand_key))); - if (FLAGS_user_timestamp_size > 0) { - write_ts_str = NowNanosStr(); - write_ts = write_ts_str; - } - } - if (write_ts.size() == 0 && FLAGS_user_timestamp_size) { - write_ts_str = NowNanosStr(); - write_ts = write_ts_str; - } + std::string write_ts_str = NowNanosStr(); + Slice write_ts = write_ts_str; std::string key_str = Key(rand_key); Slice key = key_str;