Lock contention at MultiFileFunction::TryInitializeNextBatch and CopyToFunctionLocalState::FlushPartitions · Issue #106 · duckdb/ducklake · GitHub
More Web Proxy on the site http://driver.im/
You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have sf100 tpch data on object store, and the lineitem is partitoned by l_shipdate (total 2526 partitions, each file is 6.3MiB in average). When running tpch q1 it's quite slow, the pstack shows that lock contention at MultiFileFunction::TryInitializeNextBatch is very high.
One thread is running TryInitializeNextBatch
#0 0x00007f9ddea5321f in poll () from /lib64/libc.so.6
#1 0x00007f9db616a33e in duckdb_httplib_openssl::detail::create_client_socket(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_s
#2 0x00007f9db616bbcf in int duckdb_httplib_openssl::detail::create_socket<duckdb_httplib_openssl::detail::create_client_socket(std::__cxx11::basic_string<char, std::char_traits<char>, st
#3 0x00007f9db616ef41 in duckdb_httplib_openssl::ClientImpl::create_client_socket(duckdb_httplib_openssl::Error&) const () from /root/.duckdb/extensions/v1.3.0/linux_amd64/httpfs.duckdb_e
#4 0x00007f9db616f3eb in duckdb_httplib_openssl::SSLClient::create_and_connect_socket(duckdb_httplib_openssl::ClientImpl::Socket&, duckdb_httplib_openssl::Error&) () from /root/.duckdb/ex
#5 0x00007f9db617da0f in duckdb_httplib_openssl::ClientImpl::send_(duckdb_httplib_openssl::Request&, duckdb_httplib_openssl::Response&, duckdb_httplib_openssl::Error&) () from /root/.duck
#6 0x00007f9db617e2c0 in duckdb_httplib_openssl::ClientImpl::send_(duckdb_httplib_openssl::Request&&) () from /root/.duckdb/extensions/v1.3.0/linux_amd64/httpfs.duckdb_extension
#7 0x00007f9db617f006 in duckdb::HTTPFSClient::Head(duckdb::HeadRequestInfo&) () from /root/.duckdb/extensions/v1.3.0/linux_amd64/httpfs.duckdb_extension
#8 0x00007f9db6537633 in duckdb::HTTPClient::Request(duckdb::BaseRequest&) () from /root/.duckdb/extensions/v1.3.0/linux_amd64/httpfs.duckdb_extension
#9 0x00007f9db6537712 in std::_Function_handler<duckdb::unique_ptr<duckdb::HTTPResponse, std::default_delete<duckdb::HTTPResponse>, true> (), duckdb::HTTPUtil::SendRequest(duckdb::BaseReq
#10 0x00007f9db65470b4 in duckdb::HTTPUtil::RunRequestWithRetry(std::function<duckdb::unique_ptr<duckdb::HTTPResponse, std::default_delete<duckdb::HTTPResponse>, true> ()> const&, duckdb::
#11 0x00007f9db6548051 in duckdb::HTTPUtil::SendRequest(duckdb::BaseRequest&, duckdb::unique_ptr<duckdb::HTTPClient, std::default_delete<duckdb::HTTPClient>, true>&) () from /root/.duckdb/
#12 0x00007f9db65375ae in duckdb::HTTPUtil::Request(duckdb::BaseRequest&, duckdb::unique_ptr<duckdb::HTTPClient, std::default_delete<duckdb::HTTPClient>, true>&) () from /root/.duckdb/exte
#13 0x00007f9db6162392 in duckdb::HTTPFileSystem::HeadRequest(duckdb::FileHandle&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, duckdb::HTTPHeaders) ()
#14 0x00007f9db614d8ae in duckdb::S3FileSystem::HeadRequest(duckdb::FileHandle&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, duckdb::HTTPHeaders) () fr
#15 0x00007f9db6164096 in duckdb::HTTPFileHandle::LoadFileInfo() () from /root/.duckdb/extensions/v1.3.0/linux_amd64/httpfs.duckdb_extension
#16 0x00007f9db6165629 in duckdb::HTTPFileHandle::Initialize(duckdb::optional_ptr<duckdb::FileOpener, true>) () from /root/.duckdb/extensions/v1.3.0/linux_amd64/httpfs.duckdb_extension
#17 0x00007f9db615a192 in duckdb::S3FileHandle::Initialize(duckdb::optional_ptr<duckdb::FileOpener, true>) () from /root/.duckdb/extensions/v1.3.0/linux_amd64/httpfs.duckdb_extension
#18 0x00007f9db615f022 in duckdb::HTTPFileSystem::OpenFileExtended(duckdb::OpenFileInfo const&, duckdb::FileOpenFlags, duckdb::optional_ptr<duckdb::FileOpener, true>) () from /root/.duckdb
#19 0x00000000008ef8cd in duckdb::FileSystem::OpenFile(duckdb::OpenFileInfo const&, duckdb::FileOpenFlags, duckdb::optional_ptr<duckdb::FileOpener, true>) ()
#20 0x000000000091e0aa in duckdb::VirtualFileSystem::OpenFileExtended(duckdb::OpenFileInfo const&, duckdb::FileOpenFlags, duckdb::optional_ptr<duckdb::FileOpener, true>) ()
#21 0x00000000008ef8cd in duckdb::FileSystem::OpenFile(duckdb::OpenFileInfo const&, duckdb::FileOpenFlags, duckdb::optional_ptr<duckdb::FileOpener, true>) ()
#22 0x0000000000b9f055 in duckdb::OpenerFileSystem::OpenFileExtended(duckdb::OpenFileInfo const&, duckdb::FileOpenFlags, duckdb::optional_ptr<duckdb::FileOpener, true>) ()
#23 0x00000000008ef8cd in duckdb::FileSystem::OpenFile(duckdb::OpenFileInfo const&, duckdb::FileOpenFlags, duckdb::optional_ptr<duckdb::FileOpener, true>) ()
#24 0x0000000000d37c7b in duckdb::CachingFileHandle::GetFileHandle() ()
#25 0x0000000000d383d8 in duckdb::CachingFileHandle::CachingFileHandle(duckdb::CachingFileSystem&, duckdb::OpenFileInfo const&, duckdb::FileOpenFlags, duckdb::ExternalFileCache::CachedFile
#26 0x0000000000d40ea4 in duckdb::CachingFileSystem::OpenFile(duckdb::OpenFileInfo const&, duckdb::FileOpenFlags) ()
#27 0x00000000019d300f in duckdb::ParquetReader::InitializeScan(duckdb::ClientContext&, duckdb::ParquetReaderScanState&, duckdb::vector<unsigned long, true>) ()
#28 0x00000000019b476a in duckdb::ParquetReader::TryInitializeScan(duckdb::ClientContext&, duckdb::GlobalTableFunctionState&, duckdb::LocalTableFunctionState&) ()
#29 0x00000000019befdc in duckdb::MultiFileFunction<duckdb::ParquetMultiFileInfo>::TryInitializeNextBatch(duckdb::ClientContext&, duckdb::MultiFileBindData const&, duckdb::MultiFileLocalSt
#30 0x00000000019bfd9d in duckdb::MultiFileFunction<duckdb::ParquetMultiFileInfo>::MultiFileScan(duckdb::ClientContext&, duckdb::TableFunctionInput&, duckdb::DataChunk&) ()
#31 0x00000000014ffdfc in duckdb::PhysicalTableScan::GetData(duckdb::ExecutionContext&, duckdb::DataChunk&, duckdb::OperatorSourceInput&) const ()
Lots of other threads are waiting for the lock:
Thread 31 (Thread 0x7f9dcf7e2640 (LWP 2375)):
#0 0x00007f9ddee5ae90 in __lll_lock_wait () from /lib64/libpthread.so.0
#1 0x00007f9ddee53753 in pthread_mutex_lock () from /lib64/libpthread.so.0
#2 0x00000000019be666 in duckdb::MultiFileFunction<duckdb::ParquetMultiFileInfo>::TryInitializeNextBatch(duckdb::ClientContext&, duckdb::MultiFileBindData const&, duckdb::MultiFileLocalSt
#3 0x00000000019bfd9d in duckdb::MultiFileFunction<duckdb::ParquetMultiFileInfo>::MultiFileScan(duckdb::ClientContext&, duckdb::TableFunctionInpu
8000
t&, duckdb::DataChunk&) ()
#4 0x00000000014ffdfc in duckdb::PhysicalTableScan::GetData(duckdb::ExecutionContext&, duckdb::DataChunk&, duckdb::OperatorSourceInput&) const ()
#5 0x0000000000bcc82d in duckdb::PipelineExecutor::FetchFromSource(duckdb::DataChunk&) ()
#6 0x0000000000bd6f48 in duckdb::PipelineExecutor::Execute(unsigned long) ()
#7 0x0000000000bd7282 in duckdb::PipelineTask::ExecuteTask(duckdb::TaskExecutionMode) ()
#8 0x0000000000bce336 in duckdb::ExecutorTask::Execute(duckdb::TaskExecutionMode) ()
#9 0x0000000000bd0a02 in duckdb::TaskScheduler::ExecuteForever(std::atomic<bool>*) ()
#10 0x00007f9dded30b74 in execute_native_thread_routine () from /lib64/libstdc++.so.6
#11 0x00007f9ddee513fb in start_thread () from /lib64/libpthread.so.0
#12 0x00007f9dde958e83 in clone () from /lib64/libc.so.6
Thread 30 (Thread 0x7f9dcffe3640 (LWP 2374)):
#0 0x00007f9ddee5ae90 in __lll_lock_wait () from /lib64/libpthread.so.0
#1 0x00007f9ddee53753 in pthread_mutex_lock () from /lib64/libpthread.so.0
#2 0x00000000019be666 in duckdb::MultiFileFunction<duckdb::ParquetMultiFileInfo>::TryInitializeNextBatch(duckdb::ClientContext&, duckdb::MultiFileBindData const&, duckdb::MultiFileLocalSt
#3 0x00000000019bfd9d in duckdb::MultiFileFunction<duckdb::ParquetMultiFileInfo>::MultiFileScan(duckdb::ClientContext&, duckdb::TableFunctionInput&, duckdb::DataChunk&) ()
#4 0x00000000014ffdfc in duckdb::PhysicalTableScan::GetData(duckdb::ExecutionContext&, duckdb::DataChunk&, duckdb::OperatorSourceInput&) const ()
#5 0x0000000000bcc82d in duckdb::PipelineExecutor::FetchFromSource(duckdb::DataChunk&) ()
#6 0x0000000000bd6f48 in duckdb::PipelineExecutor::Execute(unsigned long) ()
#7 0x0000000000bd7282 in duckdb::PipelineTask::ExecuteTask(duckdb::TaskExecutionMode) ()
#8 0x0000000000bce336 in duckdb::ExecutorTask::Execute(duckdb::TaskExecutionMode) ()
#9 0x0000000000bd0a02 in duckdb::TaskScheduler::ExecuteForever(std::atomic<bool>*) ()
#10 0x00007f9dded30b74 in execute_native_thread_routine () from /lib64/libstdc++.so.6
#11 0x00007f9ddee513fb in start_thread () from /lib64/libpthread.so.0
#12 0x00007f9dde958e83 in clone () from /lib64/libc.so.6
Thread 29 (Thread 0x7f9dd07e4640 (LWP 2373)):
#0 0x00007f9ddee5ae90 in __lll_lock_wait () from /lib64/libpthread.so.0
#1 0x00007f9ddee53753 in pthread_mutex_lock () from /lib64/libpthread.so.0
#2 0x00000000019be666 in duckdb::MultiFileFunction<duckdb::ParquetMultiFileInfo>::TryInitializeNextBatch(duckdb::ClientContext&, duckdb::MultiFileBindData const&, duckdb::MultiFileLocalSt
#3 0x00000000019bfd9d in duckdb::MultiFileFunction<duckdb::ParquetMultiFileInfo>::MultiFileScan(duckdb::ClientContext&, duckdb::TableFunctionInput&, duckdb::DataChunk&) ()
#4 0x00000000014ffdfc in duckdb::PhysicalTableScan::GetData(duckdb::ExecutionContext&, duckdb::DataChunk&, duckdb::OperatorSourceInput&) const ()
#5 0x0000000000bcc82d in duckdb::PipelineExecutor::FetchFromSource(duckdb::DataChunk&) ()
#6 0x0000000000bd6f48 in duckdb::PipelineExecutor::Execute(unsigned long) ()
#7 0x0000000000bd7282 in duckdb::PipelineTask::ExecuteTask(duckdb::TaskExecutionMode) ()
#8 0x0000000000bce336 in duckdb::ExecutorTask::Execute(duckdb::TaskExecutionMode) ()
#9 0x0000000000bd0a02 in duckdb::TaskScheduler::ExecuteForever(std::atomic<bool>*) ()
#10 0x00007f9dded30b74 in execute_native_thread_routine () from /lib64/libstdc++.so.6
#11 0x00007f9ddee513fb in start_thread () from /lib64/libpthread.so.0
#12 0x00007f9dde958e83 in clone () from /lib64/libc.so.6
Thread 28 (Thread 0x7f9dd0fe5640 (LWP 2372)):
#0 0x00007f9ddee5ae90 in __lll_lock_wait () from /lib64/libpthread.so.0
#1 0x00007f9ddee53753 in pthread_mutex_lock () from /lib64/libpthread.so.0
#2 0x00000000019be666 in duckdb::MultiFileFunction<duckdb::ParquetMultiFileInfo>::TryInitializeNextBatch(duckdb::ClientContext&, duckdb::MultiFileBindData const&, duckdb::MultiFileLocalSt
#3 0x00000000019bfd9d in duckdb::MultiFileFunction<duckdb::ParquetMultiFileInfo>::MultiFileScan(duckdb::ClientContext&, duckdb::TableFunctionInput&, duckdb::DataChunk&) ()
#4 0x00000000014ffdfc in duckdb::PhysicalTableScan::GetData(duckdb::ExecutionContext&, duckdb::DataChunk&, duckdb::OperatorSourceInput&) const ()
#5 0x0000000000bcc82d in duckdb::PipelineExecutor::FetchFromSource(duckdb::DataChunk&) ()
#6 0x0000000000bd6f48 in duckdb::PipelineExecutor::Execute(unsigned long) ()
#7 0x0000000000bd7282 in duckdb::PipelineTask::ExecuteTask(duckdb::TaskExecutionMode) ()
#8 0x0000000000bce336 in duckdb::ExecutorTask::Execute(duckdb::TaskExecutionMode) ()
The same problem happens in CopyToFunctionLocalState::FlushPartitions when I try to write orders partitioned by o_orderdate:
alter table orders set partitioned by (o_orderdate);
insert into orders select * from "tpch-sf100".orders order by o_orderdate;
. One thread gots the lock
Thread 26 (Thread 0x7f9dd1fe7640 (LWP 2370)):
#0 0x00007f9ddee576b2 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1 0x00007f9dded2a880 in std::condition_variable::wait(std::unique_lock<std::mutex>&) () from /lib64/libstdc++.so.6
#2 0x00007f9db6148f9b in duckdb::S3FileSystem::FlushAllBuffers(duckdb::S3FileHandle&) () from /root/.duckdb/extensions/v1.3.0/linux_amd64/httpfs.duckdb_extension
#3 0x00007f9db61589b0 in duckdb::S3FileHandle::Close() () from /root/.duckdb/extensions/v1.3.0/linux_amd64/httpfs.duckdb_extension
#4 0x0000000000813f83 in duckdb::BufferedFileWriter::Close() ()
#5 0x00000000019e5ca4 in duckdb::ParquetWriter::Finalize() ()
#6 0x00007f9dcca48080 in duckdb::CopyToFunctionGlobalState::GetPartitionWriteInfo(duckdb::ExecutionContext&, duckdb::PhysicalCopyToFile const&, duckdb::vector<duckdb::Value, true> const&)
#7 0x00007f9dcca48a2a in duckdb::CopyToFunctionLocalState::FlushPartitions(duckdb::ExecutionContext&, duckdb::PhysicalCopyToFile const&, duckdb::CopyToFunctionGlobalState&) () from /root/
#8 0x00007f9dcca49abc in duckdb::PhysicalCopyToFile::Sink(duckdb::ExecutionContext&, duckdb::DataChunk&, duckdb::OperatorSinkInput&) const () from /root/.duckdb/extensions/v1.3.0/linux_am
#9 0x0000000000bd42dd in duckdb::PipelineExecutor::ExecutePushInternal(duckdb::DataChunk&, duckdb::ExecutionBudget&, unsigned long) ()
#10 0x0000000000bd6fae in duckdb::PipelineExecutor::Execute(unsigned long) ()
#11 0x0000000000bd7282 in duckdb::PipelineTask::ExecuteTask(duckdb::TaskExecutionMode) ()
#12 0x0000000000bce336 in duckdb::ExecutorTask::Execute(duckdb::TaskExecutionMode) ()
#13 0x0000000000bd0a02 in duckdb::TaskScheduler::ExecuteForever(std::atomic<bool>*) ()
#14 0x00007f9dded30b74 in execute_native_thread_routine () from /lib64/libstdc++.so.6
#15 0x00007f9ddee513fb in start_thread () from /lib64/libpthread.so.0
#16 0x00007f9dde958e83 in clone () from /lib64/libc.so.6
While many other threads waits for the lock
Thread 31 (Thread 0x7f9dcf7e2640 (LWP 2375)):
#0 0x00007f9ddee5ae90 in __lll_lock_wait () from /lib64/libpthread.so.0
#1 0x00007f9ddee53753 in pthread_mutex_lock () from /lib64/libpthread.so.0
#2 0x00007f9dccc9e773 in duckdb::StorageLock::GetExclusiveLock() () from /root/.duckdb/extensions/v1.3.0/linux_amd64/ducklake.duckdb_extension
#3 0x00007f9dcca4911f in duckdb::CopyToFunctionLocalState::FlushPartitions(duckdb::ExecutionContext&, duckdb::PhysicalCopyToFile const&, duckdb::CopyToFunctionGlobalState&) () from /root/
#4 0x00007f9dcca49abc in duckdb::PhysicalCopyToFile::Sink(duckdb::ExecutionContext&, duckdb::DataChunk&, duckdb::OperatorSinkInput&) const () from /root/.duckdb/extensions/v1.3.0/linux_am
#5 0x0000000000bd42dd in duckdb::PipelineExecutor::ExecutePushInternal(duckdb::DataChunk&, duckdb::ExecutionBudget&, unsigned long) ()
#6 0x0000000000bd6fae in duckdb::PipelineExecutor::Execute(unsigned long) ()
#7 0x0000000000bd7282 in duckdb::PipelineTask::ExecuteTask(duckdb::TaskExecutionMode) ()
#8 0x0000000000bce336 in duckdb::ExecutorTask::Execute(duckdb::TaskExecutionMode) ()
#9 0x0000000000bd0a02 in duckdb::TaskScheduler::ExecuteForever(std::atomic<bool>*) ()
#10 0x00007f9dded30b74 in execute_native_thread_routine () from /lib64/libstdc++.so.6
#11 0x00007f9ddee513fb in start_thread () from /lib64/libpthread.so.0
#12 0x00007f9dde958e83 in clone () from /lib64/libc.so.6
Thread 30 (Thread 0x7f9dcffe3640 (LWP 2374)):
#0 0x00007f9ddee5ae90 in __lll_lock_wait () from /lib64/libpthread.so.0
#1 0x00007f9ddee53753 in pthread_mutex_lock () from /lib64/libpthread.so.0
#2 0x00007f9dccc9e773 in duckdb::StorageLock::GetExclusiveLock() () from /root/.duckdb/extensions/v1.3.0/linux_amd64/ducklake.duckdb_extension
#3 0x00007f9dcca4911f in duckdb::CopyToFunctionLocalState::FlushPartitions(duckdb::ExecutionContext&, duckdb::PhysicalCopyToFile const&, duckdb::CopyToFunctionGlobalState&) () from /root/
#4 0x00007f9dcca49abc in duckdb::PhysicalCopyToFile::Sink(duckdb::ExecutionContext&, duckdb::DataChunk&, duckdb::OperatorSinkInput&) const () from /root/.duckdb/extensions/v1.3.0/linux_am
#5 0x0000000000bd42dd in duckdb::PipelineExecutor::ExecutePushInternal(duckdb::DataChunk&, duckdb::ExecutionBudget&, unsigned long) ()
#6 0x0000000000bd6fae in duckdb::PipelineExecutor::Execute(unsigned long) ()
#7 0x0000000000bd7282 in duckdb::PipelineTask::ExecuteTask(duckdb::TaskExecutionMode) ()
#8 0x0000000000bce336 in duckdb::ExecutorTask::Execute(duckdb::TaskExecutionMode) ()
#9 0x0000000000bd0a02 in duckdb::TaskScheduler::ExecuteForever(std::atomic<bool>*) ()
#10 0x00007f9dded30b74 in execute_native_thread_routine () from /lib64/libstdc++.so.6
#11 0x00007f9ddee513fb in start_thread () from /lib64/libpthread.so.0
#12 0x00007f9dde958e83 in clone () from /lib64/libc.so.6
Thread 29 (Thread 0x7f9dd07e4640 (LWP 2373)):
#0 0x00007f9ddee5ae90 in __lll_lock_wait () from /lib64/libpthread.so.0
#1 0x00007f9ddee53753 in pthread_mutex_lock () from /lib64/libpthread.so.0
#2 0x00007f9dccc9e773 in duckdb::StorageLock::GetExclusiveLock() () from /root/.duckdb/extensions/v1.3.0/linux_amd64/ducklake.duckdb_extension
#3 0x00007f9dcca4911f in duckdb::CopyToFunctionLocalState::FlushPartitions(duckdb::ExecutionContext&, duckdb::PhysicalCopyToFile const&, duckdb::CopyToFunctionGlobalState&) () from /root/
#4 0x00007f9dcca49abc in duckdb::PhysicalCopyToFile::Sink(duckdb::ExecutionContext&, duckdb::DataChunk&, duckdb::OperatorSinkInput&) const () from /root/.duckdb/extensions/v1.3.0/linux_am
#5 0x0000000000bd42dd in duckdb::PipelineExecutor::ExecutePushInternal(duckdb::DataChunk&, duckdb::ExecutionBudget&, unsigned long) ()
#6 0x0000000000bd6fae in duckdb::PipelineExecutor::Execute(unsigned long) ()
#7 0x0000000000bd7282 in duckdb::PipelineTask::ExecuteTask(duckdb::TaskExecutionMode) ()
#8 0x0000000000bce336 in duckdb::ExecutorTask::Execute(duckdb::TaskExecutionMode) ()
#9 0x0000000000bd0a02 in duckdb::TaskScheduler::ExecuteForever(std::atomic<bool>*) ()
#10 0x00007f9dded30b74 in execute_native_thread_routine () from /lib64/libstdc++.so.6
#11 0x00007f9ddee513fb in start_thread () from /lib64/libpthread.so.0
#12 0x00007f9dde958e83 in clone () from /lib64/libc.so.6
Thread 28 (Thread 0x7f9dd0fe5640 (LWP 2372)):
#0 0x00007f9ddee5ae90 in __lll_lock_wait () from /lib64/libpthread.so.0
#1 0x00007f9ddee53753 in pthread_mutex_lock () from /lib64/libpthread.so.0
#2 0x00007f9dccc9e773 in duckdb::StorageLock::GetExclusiveLock() () from /root/.duckdb/extensions/v1.3.0/linux_amd64/ducklake.duckdb_extension
#3 0x00007f9dcca4911f in duckdb::CopyToFunctionLocalState::FlushPartitions(duckdb::ExecutionContext&, duckdb::PhysicalCopyToFile const&, duckdb::CopyToFunctionGlobalState&) () from /root/
#4 0x00007f9dcca49abc in duckdb::PhysicalCopyToFile::Sink(duckdb::ExecutionContext&, duckdb::DataChunk&, duckdb::OperatorSinkInput&) const () from /root/.duckdb/extensions/v1.3.0/linux_am
#5 0x0000000000bd42dd in duckdb::PipelineExecutor::ExecutePushInternal(duckdb::DataChunk&, duckdb::ExecutionBudget&, unsigned long) ()
#6 0x0000000000bd6fae in duckdb::PipelineExecutor::Execute(unsigned long) ()
The text was updated successfully, but these errors were encountered:
waitinfuture
changed the title
Lock contention at MultiFileFunction::TryInitializeNextBatch
Lock contention at MultiFileFunction::TryInitializeNextBatch and CopyToFunctionLocalState::FlushPartitions
May 31, 2025
Uh oh!
There was an error while loading. Please reload this page.
I have sf100 tpch data on object store, and the lineitem is partitoned by l_shipdate (total 2526 partitions, each file is 6.3MiB in average). When running tpch q1 it's quite slow, the pstack shows that lock contention at MultiFileFunction::TryInitializeNextBatch is very high.
One thread is running TryInitializeNextBatch
Lots of other threads are waiting for the lock:
The same problem happens in CopyToFunctionLocalState::FlushPartitions when I try to write orders partitioned by o_orderdate:
. One thread gots the lock
While many other threads waits for the lock
The text was updated successfully, but these errors were encountered: