From d76b6d15b4664765c3a41c0217d452552f31794f Mon Sep 17 00:00:00 2001 From: xiaoxmeng Date: Wed, 28 Aug 2024 09:06:49 -0700 Subject: [PATCH] Fix flaky trace dir create test (#10874) Summary: Lock is required for multithreading update the created trace directory, verified the fix in Meta test infra Pull Request resolved: https://github.com/facebookincubator/velox/pull/10874 Reviewed By: spershin Differential Revision: D61897242 Pulled By: xiaoxmeng fbshipit-source-id: 1662388e256d7add8abc05de6faf7b6a00c8f972 --- velox/exec/trace/test/QueryTraceTest.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/velox/exec/trace/test/QueryTraceTest.cpp b/velox/exec/trace/test/QueryTraceTest.cpp index 8b969cc1b9b6..171c7cea138a 100644 --- a/velox/exec/trace/test/QueryTraceTest.cpp +++ b/velox/exec/trace/test/QueryTraceTest.cpp @@ -337,19 +337,21 @@ TEST_F(QueryTracerTest, traceDir) { fs->mkdir(parentDir); constexpr auto numThreads = 5; - std::vector queryThreads; - queryThreads.reserve(numThreads); + std::vector traceThreads; + traceThreads.reserve(numThreads); + std::mutex mutex; std::set expectedDirs; for (int i = 0; i < numThreads; ++i) { - queryThreads.emplace_back([&, i]() { + traceThreads.emplace_back([&, i]() { const auto dir = fmt::format("{}/s{}", parentDir, i); trace::createTraceDirectory(dir); + std::lock_guard l(mutex); expectedDirs.insert(dir); }); } - for (auto& queryThread : queryThreads) { - queryThread.join(); + for (auto& traceThread : traceThreads) { + traceThread.join(); } const auto actualDirs = fs->list(parentDir);