From c9e2490bc6320ef66fb4a237b65292ce7ab0f99c Mon Sep 17 00:00:00 2001 From: sdong Date: Tue, 29 Dec 2015 11:04:40 -0800 Subject: [PATCH] Fix DynamicBloomTest.concurrent_with_perf to pass TSAN Summary: TSAN fails on DynamicBloomTest.concurrent_with_perf. This change fixes it. Not sure why though. Test Plan: Run the test with TSAN and make sure no warning shown. Reviewers: yhchiang, IslamAbdelRahman, anthony, ngbronson, rven Reviewed By: rven Subscribers: rven, leveldb, dhruba Differential Revision: https://reviews.facebook.net/D52383 --- util/dynamic_bloom_test.cc | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/util/dynamic_bloom_test.cc b/util/dynamic_bloom_test.cc index e5ef4aab74..e7a730fcfb 100644 --- a/util/dynamic_bloom_test.cc +++ b/util/dynamic_bloom_test.cc @@ -255,16 +255,13 @@ TEST_F(DynamicBloomTest, concurrent_with_perf) { timer.Start(); - auto adder = [&](size_t t) { + std::function adder = [&](size_t t) { for (uint64_t i = 1 + t; i <= num_keys; i += num_threads) { std_bloom.AddConcurrently( Slice(reinterpret_cast(&i), 8)); } }; for (size_t t = 0; t < num_threads; ++t) { - // TSAN currently complains of a race between an allocation - // made bythis race and the eventual shutdown of the thread. - // It is a false positive. threads.emplace_back(adder, t); } while (threads.size() > 0) { @@ -279,7 +276,7 @@ TEST_F(DynamicBloomTest, concurrent_with_perf) { timer.Start(); - auto hitter = [&](size_t t) { + std::function hitter = [&](size_t t) { for (uint64_t i = 1 + t; i <= num_keys; i += num_threads) { bool f = std_bloom.MayContain(Slice(reinterpret_cast(&i), 8)); @@ -302,7 +299,7 @@ TEST_F(DynamicBloomTest, concurrent_with_perf) { timer.Start(); std::atomic false_positives(0); - auto misser = [&](size_t t) { + std::function misser = [&](size_t t) { for (uint64_t i = num_keys + 1 + t; i <= 2 * num_keys; i += num_threads) { bool f =