diff --git a/db_stress_tool/db_stress_driver.cc b/db_stress_tool/db_stress_driver.cc index 7ab9c5a9a..6bf46861f 100644 --- a/db_stress_tool/db_stress_driver.cc +++ b/db_stress_tool/db_stress_driver.cc @@ -73,26 +73,31 @@ bool RunStressTest(StressTest* stress) { fprintf(stdout, "%s Initializing worker threads\n", clock->TimeToString(now / 1000000).c_str()); - ThreadState bg_thread(0, &shared); - ThreadState continuous_verification_thread(0, &shared); + shared.SetThreads(n); + + if (FLAGS_compaction_thread_pool_adjust_interval > 0) { + shared.IncBgThreads(); + } + + if (FLAGS_compaction_thread_pool_adjust_interval > 0) { + shared.IncBgThreads(); + } + std::vector threads(n); - { - MutexLock l(shared.GetMutex()); + for (uint32_t i = 0; i < n; i++) { + threads[i] = new ThreadState(i, &shared); + db_stress_env->StartThread(ThreadBody, threads[i]); + } - for (uint32_t i = 0; i < n; i++) { - shared.IncThreads(); - threads[i] = new ThreadState(i, &shared); - db_stress_env->StartThread(ThreadBody, threads[i]); - } - if (FLAGS_compaction_thread_pool_adjust_interval > 0) { - shared.IncBgThreads(); - db_stress_env->StartThread(PoolSizeChangeThread, &bg_thread); - } - if (FLAGS_continuous_verification_interval > 0) { - shared.IncBgThreads(); - db_stress_env->StartThread(DbVerificationThread, - &continuous_verification_thread); - } + ThreadState bg_thread(0, &shared); + if (FLAGS_compaction_thread_pool_adjust_interval > 0) { + db_stress_env->StartThread(PoolSizeChangeThread, &bg_thread); + } + + ThreadState continuous_verification_thread(0, &shared); + if (FLAGS_continuous_verification_interval > 0) { + db_stress_env->StartThread(DbVerificationThread, + &continuous_verification_thread); } // Each thread goes through the following states: diff --git a/db_stress_tool/db_stress_shared_state.h b/db_stress_tool/db_stress_shared_state.h index d48aeb131..ddfb67261 100644 --- a/db_stress_tool/db_stress_shared_state.h +++ b/db_stress_tool/db_stress_shared_state.h @@ -191,7 +191,7 @@ class SharedState { uint32_t GetNumThreads() const { return num_threads_; } - void IncThreads() { num_threads_++; } + void SetThreads(int num_threads) { num_threads_ = num_threads; } void IncInitialized() { num_initialized_++; }