ClickHouse icon indicating copy to clipboard operation
ClickHouse copied to clipboard

Data race in DataPartStorageOnDisk::onRename

Open azat opened this issue 3 years ago • 1 comments

WARNING: ThreadSanitizer: data race (pid=656)
  Write of size 8 at 0x7b1800e9d0b0 by thread T85:
    #0 std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::__set_long_size(unsigned long) build_docker/../contrib/libcxx/include/string:1509:35 (clickhouse+0x23a83b20) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #1 std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>& std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::__assign_no_alias<false>(char const*, unsigned long) build_docker/../contrib/libcxx/include/string:2306:42 (clickhouse+0x23a83b20)
    #2 std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::operator=(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) build_docker/../contrib/libcxx/include/string:2392:14 (clickhouse+0x1c7788cc) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #3 DB::DataPartStorageOnDisk::onRename(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) build_docker/../src/Storages/MergeTree/DataPartStorageOnDisk.cpp:760:14 (clickhouse+0x1c7788cc)
    #4 DB::DataPartStorageOnDisk::remove(std::__1::function<DB::CanRemoveDescription ()>&&, DB::MergeTreeDataPartChecksums const&, std::__1::list<DB::IDataPartStorage::ProjectionChecksums, std::__1::allocator<DB::IDataPartStorage::ProjectionChecksums>>, bool, DB::MergeTreeDataPartState, Poco::Logger*) build_docker/../src/Storages/MergeTree/DataPartStorageOnDisk.cpp:262:9 (clickhouse+0x1c77530a) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #5 DB::IMergeTreeDataPart::remove() const build_docker/../src/Storages/MergeTree/IMergeTreeDataPart.cpp:1467:24 (clickhouse+0x1c7cbc74) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #6 DB::MergeTreeData::clearPartsFromFilesystemImpl(std::__1::vector<std::__1::shared_ptr<DB::IMergeTreeDataPart const>, std::__1::allocator<std::__1::shared_ptr<DB::IMergeTreeDataPart const>>> const&, std::__1::unordered_set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>*) build_docker/../src/Storages/MergeTree/MergeTreeData.cpp:1940:19 (clickhouse+0x1c863000) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #7 DB::MergeTreeData::clearPartsFromFilesystem(std::__1::vector<std::__1::shared_ptr<DB::IMergeTreeDataPart const>, std::__1::allocator<std::__1::shared_ptr<DB::IMergeTreeDataPart const>>> const&, bool, std::__1::unordered_set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>*) build_docker/../src/Storages/MergeTree/MergeTreeData.cpp:1891:9 (clickhouse+0x1c8628e9) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #8 DB::MergeTreeData::clearOldPartsFromFilesystem(bool) build_docker/../src/Storages/MergeTree/MergeTreeData.cpp:1858:5 (clickhouse+0x1c8626dd) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #9 DB::StorageMergeTree::scheduleDataProcessingJob(DB::BackgroundJobsAssignee&)::$_4::operator()() const build_docker/../src/Storages/StorageMergeTree.cpp:1207:34 (clickhouse+0x1cb44579) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #10 decltype(static_cast<DB::StorageMergeTree::scheduleDataProcessingJob(DB::BackgroundJobsAssignee&)::$_4&>(fp)()) std::__1::__invoke<DB::StorageMergeTree::scheduleDataProcessingJob(DB::BackgroundJobsAssignee&)::$_4&>(DB::StorageMergeTree::scheduleDataProcessingJob(DB::BackgroundJobsAssignee&)::$_4&) build_docker/../contrib/libcxx/include/type_traits:3640:23 (clickhouse+0x1cb44579)
    #11 bool std::__1::__invoke_void_return_wrapper<bool, false>::__call<DB::StorageMergeTree::scheduleDataProcessingJob(DB::BackgroundJobsAssignee&)::$_4&>(DB::StorageMergeTree::scheduleDataProcessingJob(DB::BackgroundJobsAssignee&)::$_4&) build_docker/../contrib/libcxx/include/__functional/invoke.h:30:16 (clickhouse+0x1cb44579)
    #12 std::__1::__function::__default_alloc_func<DB::StorageMergeTree::scheduleDataProcessingJob(DB::BackgroundJobsAssignee&)::$_4, bool ()>::operator()() build_docker/../contrib/libcxx/include/__functional/function.h:230:12 (clickhouse+0x1cb44579)
    #13 bool std::__1::__function::__policy_invoker<bool ()>::__call_impl<std::__1::__function::__default_alloc_func<DB::StorageMergeTree::scheduleDataProcessingJob(DB::BackgroundJobsAssignee&)::$_4, bool ()>>(std::__1::__function::__policy_storage const*) build_docker/../contrib/libcxx/include/__functional/function.h:711:16 (clickhouse+0x1cb44579)
    #14 std::__1::__function::__policy_func<bool ()>::operator()() const build_docker/../contrib/libcxx/include/__functional/function.h:843:16 (clickhouse+0x1c55718c) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #15 std::__1::function<bool ()>::operator()() const build_docker/../contrib/libcxx/include/__functional/function.h:1184:12 (clickhouse+0x1c55718c)
    #16 DB::ExecutableLambdaAdapter::executeStep() build_docker/../src/Storages/MergeTree/IExecutableTask.h:59:15 (clickhouse+0x1c55718c)
    #17 DB::MergeTreeBackgroundExecutor<DB::OrdinaryRuntimeQueue>::routine(std::__1::shared_ptr<DB::TaskRuntimeData>) build_docker/../src/Storages/MergeTree/MergeTreeBackgroundExecutor.cpp:137:42 (clickhouse+0x1c84436e) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #18 DB::MergeTreeBackgroundExecutor<DB::OrdinaryRuntimeQueue>::threadFunction() build_docker/../src/Storages/MergeTree/MergeTreeBackgroundExecutor.cpp:259:13 (clickhouse+0x1c8459b1) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #19 DB::MergeTreeBackgroundExecutor<DB::OrdinaryRuntimeQueue>::MergeTreeBackgroundExecutor(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, unsigned long, unsigned long, unsigned long)::'lambda'()::operator()() const build_docker/../src/Storages/MergeTree/MergeTreeBackgroundExecutor.h:185:50 (clickhouse+0x1c848541) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #20 decltype(static_cast<DB::MergeTreeBackgroundExecutor<DB::OrdinaryRuntimeQueue>::MergeTreeBackgroundExecutor(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, unsigned long, unsigned long, unsigned long)::'lambda'()&>(fp)()) std::__1::__invoke<DB::MergeTreeBackgroundExecutor<DB::OrdinaryRuntimeQueue>::MergeTreeBackgroundExecutor(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, unsigned long, unsigned long, unsigned long)::'lambda'()&>(DB::MergeTreeBackgroundExecutor<DB::OrdinaryRuntimeQueue>::MergeTreeBackgroundExecutor(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, unsigned long, unsigned long, unsigned long)::'lambda'()&) build_docker/../contrib/libcxx/include/type_traits:3640:23 (clickhouse+0x1c848541)
    #21 void std::__1::__invoke_void_return_wrapper<void, true>::__call<DB::MergeTreeBackgroundExecutor<DB::OrdinaryRuntimeQueue>::MergeTreeBackgroundExecutor(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, unsigned long, unsigned long, unsigned long)::'lambda'()&>(DB::MergeTreeBackgroundExecutor<DB::OrdinaryRuntimeQueue>::MergeTreeBackgroundExecutor(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, unsigned long, unsigned long, unsigned long)::'lambda'()&) build_docker/../contrib/libcxx/include/__functional/invoke.h:61:9 (clickhouse+0x1c848541)
    #22 std::__1::__function::__default_alloc_func<DB::MergeTreeBackgroundExecutor<DB::OrdinaryRuntimeQueue>::MergeTreeBackgroundExecutor(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, unsigned long, unsigned long, unsigned long)::'lambda'(), void ()>::operator()() build_docker/../contrib/libcxx/include/__functional/function.h:230:12 (clickhouse+0x1c848541)
    #23 void std::__1::__function::__policy_invoker<void ()>::__call_impl<std::__1::__function::__default_alloc_func<DB::MergeTreeBackgroundExecutor<DB::OrdinaryRuntimeQueue>::MergeTreeBackgroundExecutor(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, unsigned long, unsigned long, unsigned long)::'lambda'(), void ()>>(std::__1::__function::__policy_storage const*) build_docker/../contrib/libcxx/include/__functional/function.h:711:16 (clickhouse+0x1c848541)
    #24 std::__1::__function::__policy_func<void ()>::operator()() const build_docker/../contrib/libcxx/include/__functional/function.h:843:16 (clickhouse+0xb751e6e) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #25 std::__1::function<void ()>::operator()() const build_docker/../contrib/libcxx/include/__functional/function.h:1184:12 (clickhouse+0xb751e6e)
    #26 ThreadPoolImpl<ThreadFromGlobalPoolImpl<false>>::worker(std::__1::__list_iterator<ThreadFromGlobalPoolImpl<false>, void*>) build_docker/../src/Common/ThreadPool.cpp:294:17 (clickhouse+0xb751e6e)
    #27 void ThreadPoolImpl<ThreadFromGlobalPoolImpl<false>>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>, bool)::'lambda0'()::operator()() const build_docker/../src/Common/ThreadPool.cpp:144:73 (clickhouse+0xb75662c) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #28 decltype(static_cast<void>(fp)()) std::__1::__invoke_constexpr<void ThreadPoolImpl<ThreadFromGlobalPoolImpl<false>>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>, bool)::'lambda0'()&>(void&&) build_docker/../contrib/libcxx/include/type_traits:3648:23 (clickhouse+0xb75662c)
    #29 decltype(auto) std::__1::__apply_tuple_impl<void ThreadPoolImpl<ThreadFromGlobalPoolImpl<false>>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>, bool)::'lambda0'()&, std::__1::tuple<>&>(void&&, std::__1::tuple<>&, std::__1::__tuple_indices<>) build_docker/../contrib/libcxx/include/tuple:1595:1 (clickhouse+0xb75662c)
    #30 decltype(auto) std::__1::apply<void ThreadPoolImpl<ThreadFromGlobalPoolImpl<false>>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>, bool)::'lambda0'()&, std::__1::tuple<>&>(void&&, std::__1::tuple<>&) build_docker/../contrib/libcxx/include/tuple:1604:1 (clickhouse+0xb75662c)
    #31 ThreadFromGlobalPoolImpl<false>::ThreadFromGlobalPoolImpl<void ThreadPoolImpl<ThreadFromGlobalPoolImpl<false>>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>, bool)::'lambda0'()>(void&&)::'lambda'()::operator()() build_docker/../src/Common/ThreadPool.h:193:13 (clickhouse+0xb75662c)
    #32 decltype(static_cast<void>(fp)()) std::__1::__invoke<ThreadFromGlobalPoolImpl<false>::ThreadFromGlobalPoolImpl<void ThreadPoolImpl<ThreadFromGlobalPoolImpl<false>>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>, bool)::'lambda0'()>(void&&)::'lambda'()&>(void&&) build_docker/../contrib/libcxx/include/type_traits:3640:23 (clickhouse+0xb75662c)
    #33 void std::__1::__invoke_void_return_wrapper<void, true>::__call<ThreadFromGlobalPoolImpl<false>::ThreadFromGlobalPoolImpl<void ThreadPoolImpl<ThreadFromGlobalPoolImpl<false>>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>, bool)::'lambda0'()>(void&&)::'lambda'()&>(ThreadFromGlobalPoolImpl<false>::ThreadFromGlobalPoolImpl<void ThreadPoolImpl<ThreadFromGlobalPoolImpl<false>>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>, bool)::'lambda0'()>(void&&)::'lambda'()&) build_docker/../contrib/libcxx/include/__functional/invoke.h:61:9 (clickhouse+0xb7565a1) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #34 std::__1::__function::__default_alloc_func<ThreadFromGlobalPoolImpl<false>::ThreadFromGlobalPoolImpl<void ThreadPoolImpl<ThreadFromGlobalPoolImpl<false>>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>, bool)::'lambda0'()>(void&&)::'lambda'(), void ()>::operator()() build_docker/../contrib/libcxx/include/__functional/function.h:230:12 (clickhouse+0xb7565a1)
    #35 void std::__1::__function::__policy_invoker<void ()>::__call_impl<std::__1::__function::__default_alloc_func<ThreadFromGlobalPoolImpl<false>::ThreadFromGlobalPoolImpl<void ThreadPoolImpl<ThreadFromGlobalPoolImpl<false>>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>, bool)::'lambda0'()>(void&&)::'lambda'(), void ()>>(std::__1::__function::__policy_storage const*) build_docker/../contrib/libcxx/include/__functional/function.h:711:16 (clickhouse+0xb7565a1)
    #36 std::__1::__function::__policy_func<void ()>::operator()() const build_docker/../contrib/libcxx/include/__functional/function.h:843:16 (clickhouse+0xb74f2ae) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #37 std::__1::function<void ()>::operator()() const build_docker/../contrib/libcxx/include/__functional/function.h:1184:12 (clickhouse+0xb74f2ae)
    #38 ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) build_docker/../src/Common/ThreadPool.cpp:294:17 (clickhouse+0xb74f2ae)
    #39 void ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>, bool)::'lambda0'()::operator()() const build_docker/../src/Common/ThreadPool.cpp:144:73 (clickhouse+0xb7538b1) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #40 decltype(static_cast<void>(fp)()) std::__1::__invoke<void ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>, bool)::'lambda0'()>(void&&) build_docker/../contrib/libcxx/include/type_traits:3640:23 (clickhouse+0xb7538b1)
    #41 void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>, bool)::'lambda0'()>(std::__1::tuple<void, void ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>, bool)::'lambda0'()>&, std::__1::__tuple_indices<>) build_docker/../contrib/libcxx/include/thread:282:5 (clickhouse+0xb7538b1)
    #42 void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>, bool)::'lambda0'()>>(void*) build_docker/../contrib/libcxx/include/thread:293:5 (clickhouse+0xb7538b1)

  Previous read of size 8 at 0x7b1800e9d0b0 by thread T4307:
    #0 std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::__get_long_size() const build_docker/../contrib/libcxx/include/string:1512:34 (clickhouse+0x1c76e513) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #1 std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::size() const build_docker/../contrib/libcxx/include/string:954:31 (clickhouse+0x1c76e513)
    #2 std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::length() const build_docker/../contrib/libcxx/include/string:955:74 (clickhouse+0x1c76e513)
    #3 std::__1::__fs::filesystem::__is_pathable_string<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, void>::__range_end(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) build_docker/../contrib/libcxx/include/__filesystem/path.h:100:29 (clickhouse+0x1c76e513)
    #4 void std::__1::__fs::filesystem::_PathCVT<char>::__append_source<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) build_docker/../contrib/libcxx/include/__filesystem/path.h:297:20 (clickhouse+0x1c76e513)
    #5 std::__1::__fs::filesystem::path::path<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, void>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::__fs::filesystem::path::format) build_docker/../contrib/libcxx/include/__filesystem/path.h:437:5 (clickhouse+0x1c76e513)
    #6 DB::DataPartStorageOnDisk::getFullPath() const build_docker/../src/Storages/MergeTree/DataPartStorageOnDisk.cpp:33:65 (clickhouse+0x1c76e513)
    #7 DB::StorageSystemParts::processNextStorage(std::__1::shared_ptr<DB::Context const>, std::__1::vector<COW<DB::IColumn>::mutable_ptr<DB::IColumn>, std::__1::allocator<COW<DB::IColumn>::mutable_ptr<DB::IColumn>>>&, std::__1::vector<char8_t, std::__1::allocator<char8_t>>&, DB::StoragesInfo const&, bool) build_docker/../src/Storages/System/StorageSystemParts.cpp:201:71 (clickhouse+0x1a170d13) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #8 DB::StorageSystemPartsBase::read(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&, std::__1::shared_ptr<DB::StorageSnapshot> const&, DB::SelectQueryInfo&, std::__1::shared_ptr<DB::Context const>, DB::QueryProcessingStage::Enum, unsigned long, unsigned int) build_docker/../src/Storages/System/StorageSystemPartsBase.cpp:288:9 (clickhouse+0x1a17a1ed) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #9 DB::IStorage::read(DB::QueryPlan&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&, std::__1::shared_ptr<DB::StorageSnapshot> const&, DB::SelectQueryInfo&, std::__1::shared_ptr<DB::Context const>, DB::QueryProcessingStage::Enum, unsigned long, unsigned int) build_docker/../src/Storages/IStorage.cpp:126:17 (clickhouse+0x1c31770b) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #10 DB::InterpreterSelectQuery::executeFetchColumns(DB::QueryProcessingStage::Enum, DB::QueryPlan&) build_docker/../src/Interpreters/InterpreterSelectQuery.cpp:2276:18 (clickhouse+0x1b8d951e) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #11 DB::InterpreterSelectQuery::executeImpl(DB::QueryPlan&, std::__1::optional<DB::Pipe>) build_docker/../src/Interpreters/InterpreterSelectQuery.cpp:1295:9 (clickhouse+0x1b8d03a9) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #12 DB::InterpreterSelectQuery::buildQueryPlan(DB::QueryPlan&) build_docker/../src/Interpreters/InterpreterSelectQuery.cpp:723:5 (clickhouse+0x1b8cf961) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #13 DB::InterpreterSelectWithUnionQuery::buildQueryPlan(DB::QueryPlan&) build_docker/../src/Interpreters/InterpreterSelectWithUnionQuery.cpp:294:38 (clickhouse+0x1b92b964) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #14 DB::InterpreterSelectWithUnionQuery::execute() build_docker/../src/Interpreters/InterpreterSelectWithUnionQuery.cpp:368:5 (clickhouse+0x1b92c818) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #15 DB::executeQueryImpl(char const*, char const*, std::__1::shared_ptr<DB::Context>, bool, DB::QueryProcessingStage::Enum, DB::ReadBuffer*) build_docker/../src/Interpreters/executeQuery.cpp:686:36 (clickhouse+0x1bcb8c1e) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #16 DB::executeQuery(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::shared_ptr<DB::Context>, bool, DB::QueryProcessingStage::Enum) build_docker/../src/Interpreters/executeQuery.cpp:1087:30 (clickhouse+0x1bcb5a0b) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #17 DB::TCPHandler::runImpl() build_docker/../src/Server/TCPHandler.cpp:362:24 (clickhouse+0x1ccd8345) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #18 DB::TCPHandler::run() build_docker/../src/Server/TCPHandler.cpp:1879:9 (clickhouse+0x1ccebf07) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #19 Poco::Net::TCPServerConnection::start() build_docker/../contrib/poco/Net/src/TCPServerConnection.cpp:43:3 (clickhouse+0x2005fa82) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #20 Poco::Net::TCPServerDispatcher::run() build_docker/../contrib/poco/Net/src/TCPServerDispatcher.cpp:115:20 (clickhouse+0x200602f2) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #21 Poco::PooledThread::run() build_docker/../contrib/poco/Foundation/src/ThreadPool.cpp:199:14 (clickhouse+0x202b7cb9) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #22 Poco::(anonymous namespace)::RunnableHolder::run() build_docker/../contrib/poco/Foundation/src/Thread.cpp:55:11 (clickhouse+0x202b60cf) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)
    #23 Poco::ThreadImpl::runnableEntry(void*) build_docker/../contrib/poco/Foundation/src/Thread_POSIX.cpp:345:27 (clickhouse+0x202b4707) (BuildId: 85ae272816ed52ce574413a48f2785a6a03c25f2)

https://s3.amazonaws.com/clickhouse-test-reports/41467/f76f14a99c040f2a4672eff62d79e409d29fd741/stateless_tests__tsan__[1/3].html

azat avatar Sep 20 '22 08:09 azat

similar report: https://s3.amazonaws.com/clickhouse-test-reports/41247/a963fbd653e3d9924df73aa334b0159e13fea5ed/stateless_tests__tsan__s3_storage__[1/3]/stderr.log

looks like onRename and getFullPath called concurrently and we just don't synchronise access to part_dir and root_path with a lock.

nickitat avatar Sep 20 '22 21:09 nickitat

This happens when select from system.parts is called. This select reads all parts, deleted parts also are read. Here https://github.com/ClickHouse/ClickHouse/pull/41145 I encountered this race and made fix for it. Just do not read getFullPath when table is in Deleted state.

CheSema avatar Oct 27 '22 09:10 CheSema

Resolved in https://github.com/ClickHouse/ClickHouse/pull/41145

tavplubix avatar Nov 25 '22 13:11 tavplubix

The fix was incomplete: https://s3.amazonaws.com/clickhouse-test-reports/0/433258f5a1d31001487da3679915b6089bd8a5a2/stress_test__tsan_.html

tavplubix avatar Mar 11 '23 17:03 tavplubix

https://s3.amazonaws.com/clickhouse-test-reports/0/f7e29d1e922904b14de29c10dff196a567e8d0c7/stress_test__tsan_.html

tavplubix avatar Mar 22 '23 00:03 tavplubix