TangSiyang2001 opened a new issue, #26052: URL: https://github.com/apache/doris/issues/26052
### Search before asking - [X] I had searched in the [issues](https://github.com/apache/doris/issues?q=is%3Aissue) and found no similar issues. ### Version 2.0, but maybe all versions ### What's Wrong? After reopen connection to broker failed, the broker reader will hold a null connection(_client in the broker connection will be nullptr). When closing the broker reader, this nullptr will cause a crashing. ``` (gdb) bt #0 doris::io::BrokerFileReader::close (this=0x7f66e37c2010) at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/io/fs/broker_file_reader.cpp:69 #1 0x0000560b66ea3ac4 in doris::vectorized::CsvReader::close (this=0x7f652d888c80) at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/vec/exec/format/csv/csv_reader.cpp:960 #2 0x0000560b684e45b7 in doris::vectorized::VFileScanner::close (this=0x7f67aa7be300, state=0x7f652d7a1c00) at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/vec/exec/scan/vfile_scanner.cpp:1038 #3 0x0000560b684d727d in doris::vectorized::ScannerContext::_close_and_clear_scanners (this=this@entry=0x7f629c63ed10, node=node@entry=0x7f635e75b900, state=state@entry=0x7f652d7a1c00) at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/vec/exec/scan/scanner_context.cpp:288 #4 0x0000560b684d7516 in doris::vectorized::ScannerContext::clear_and_join (this=0x7f629c63ed10, node=0x7f635e75b900, state=0x7f652d7a1c00) at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/vec/exec/scan/scanner_context.cpp:315 #5 0x0000560b68508d94 in doris::vectorized::VScanNode::release_resource (this=0x7f635e75b900, state=0x7f652d7a1c00) at /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h:1291 #6 0x0000560b647adaf3 in doris::ExecNode::close (this=0x7f635e75b900, state=0x7f652d7a1c00) at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/exec/exec_node.cpp:213 #7 0x0000560b68508c91 in doris::vectorized::VScanNode::close (this=0x7f66e37c2078, state=0x852ccb668) at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/vec/exec/scan/vscan_node.cpp:330 #8 0x0000560b647a53da in doris::PlanFragmentExecutor::close (this=0x7f6501cf0578) at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/runtime/plan_fragment_executor.cpp:531 #9 0x0000560b6472cef2 in doris::FragmentExecState::execute (this=<optimized out>) at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/runtime/fragment_mgr.cpp:272 #10 0x0000560b6473173e in doris::FragmentMgr::_exec_actual(std::shared_ptr<doris::FragmentExecState>, std::function<void (doris::RuntimeState*, doris::Status*)> const&) (this=this@entry=0x7f6779957000, exec_state=..., cb=...) at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/runtime/fragment_mgr.cpp:533 #11 0x0000560b6473d389 in doris::FragmentMgr::exec_plan_fragment(doris::TExecPlanFragmentParams const&, std::function<void (doris::RuntimeState*, doris::Status*)> const&)::$_0::operator()() const (this=<optimized out>) at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/runtime/fragment_mgr.cpp:838 #12 std::__invoke_impl<void, doris::FragmentMgr::exec_plan_fragment(doris::TExecPlanFragmentParams const&, std::function<void (doris::RuntimeState*, doris::Status*)> const&)::$_0&>(std::__invoke_other, doris::FragmentMgr::exec_plan_fragment(doris::TExecPlanFragmentParams const&, std::function<void (doris::RuntimeState*, doris::Status*)> const&)::$_0&) (__f=...) at /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:61 #13 std::__invoke_r<void, doris::FragmentMgr::exec_plan_fragment(doris::TExecPlanFragmentParams const&, std::function<void (doris::RuntimeState*, doris::Status*)> const&)::$_0&>(doris::FragmentMgr::exec_plan_fragment(doris::TExecPlanFragmentParams const&, std::function<void (doris::RuntimeState*, doris::Status*)> const&)::$_0&) (__fn=...) at /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:111 #14 std::_Function_handler<void (), doris::FragmentMgr::exec_plan_fragment(doris::TExecPlanFragmentParams const&, std::function<void (doris::RuntimeState*, doris::Status*)> const&)::$_0>::_M_invoke(std::_Any_data const&) (__functor=...) at /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:291 #15 0x0000560b6497c3ef in doris::ThreadPool::dispatch_thread (this=0x7f67a969a380) at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/util/threadpool.cpp:533 #16 0x0000560b6497236c in std::function<void ()>::operator()() const (this=0x0) at /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:560 #17 doris::Thread::supervise_thread (arg=0x7f65cea5cda0) at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/util/thread.cpp:498 #18 0x00007f67ab990609 in start_thread (arg=<optimized out>) at pthread_create.c:477 #19 0x00007f67abc3d163 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 ``` several reopen failure can be seen before the point of coredump in be.INFO: ``` I1026 16:35:42.271083 2913122 runtime_state.h:172] task is cancelled, st = [CANCELLED]PlanFragmentExecutor open failed, reason: [THRIFT_RPC_ERROR]Couldn't open transport for 172.30.0.37:8000 (socket open( ) error: Connection refused) 0# doris::ThriftClientImpl::open() at /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/basic_string.h:187 1# doris::ClientCacheHelper::_create_client(doris::TNetworkAddress const&, std::function<doris::ThriftClientImpl* (doris::TNetworkAddress const&, void**)>&, void**, int) at /home/zcp/repo_center/ doris_branch-2.0/doris/be/src/common/status.h:435 2# doris::ClientCacheHelper::reopen_client(std::function<doris::ThriftClientImpl* (doris::TNetworkAddress const&, void**)>&, void**, int) at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/ru ntime/client_cache.cpp:0 3# doris::io::BrokerFileReader::read_at_impl(unsigned long, doris::Slice, unsigned long*, doris::io::IOContext const*) at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/runtime/client_cache. h:0 4# doris::io::FileReader::read_at(unsigned long, doris::Slice, unsigned long*, doris::io::IOContext const*) at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/common/status.h:435 5# doris::NewPlainTextLineReader::read_line(unsigned char const**, unsigned long*, bool*, doris::io::IOContext const*) at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/vec/exec/format/file_ reader/new_plain_text_line_reader.cpp:373 6# doris::vectorized::CsvReader::get_next_block(doris::vectorized::Block*, unsigned long*, bool*) at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/common/status.h:435 7# doris::vectorized::VFileScanner::_get_block_impl(doris::RuntimeState*, doris::vectorized::Block*, bool*) at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/common/status.h:435 8# doris::vectorized::VScanner::get_block(doris::RuntimeState*, doris::vectorized::Block*, bool*) at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/vec/exec/scan/vscanner.cpp:0 9# doris::vectorized::ScannerScheduler::_scanner_scan(doris::vectorized::ScannerScheduler*, doris::vectorized::ScannerContext*, std::shared_ptr<doris::vectorized::VScanner>) at /home/zcp/repo_cen ter/doris_branch-2.0/doris/be/src/common/status.h:351 10# std::_Function_handler<void (), doris::vectorized::ScannerScheduler::_schedule_scanners(doris::vectorized::ScannerContext*)::$_1::operator()() const::{lambda()#3}>::_M_invoke(std::_Any_data co nst&) at /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h:701 11# doris::ThreadPool::dispatch_thread() at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/util/threadpool.cpp:0 12# doris::Thread::supervise_thread(void*) at /var/local/ldb_toolchain/bin/../usr/include/pthread.h:562 13# ? 14# __clone W1026 16:35:42.271200 2915514 fragment_mgr.cpp:267] Got error while opening fragment 57fa9b2c9c64692-b9fa83867ea0d321, query id: 57fa9b2c9c64692-b9fa83867ea0d317: [THRIFT_RPC_ERROR]Couldn't open transport for 172.30.0.37:8000 (socket open() error: Connection refused) 0# doris::ThriftClientImpl::open() at /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/basic_string.h:187 1# doris::ClientCacheHelper::_create_client(doris::TNetworkAddress const&, std::function<doris::ThriftClientImpl* (doris::TNetworkAddress const&, void**)>&, void**, int) at /home/zcp/repo_center/ doris_branch-2.0/doris/be/src/common/status.h:435 2# doris::ClientCacheHelper::reopen_client(std::function<doris::ThriftClientImpl* (doris::TNetworkAddress const&, void**)>&, void**, int) at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/ru ntime/client_cache.cpp:0 3# doris::io::BrokerFileReader::read_at_impl(unsigned long, doris::Slice, unsigned long*, doris::io::IOContext const*) at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/runtime/client_cache. h:0 4# doris::io::FileReader::read_at(unsigned long, doris::Slice, unsigned long*, doris::io::IOContext const*) at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/common/status.h:435 5# doris::NewPlainTextLineReader::read_line(unsigned char const**, unsigned long*, bool*, doris::io::IOContext const*) at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/vec/exec/format/file_ reader/new_plain_text_line_reader.cpp:373 6# doris::vectorized::CsvReader::get_next_block(doris::vectorized::Block*, unsigned long*, bool*) at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/common/status.h:435 7# doris::vectorized::VFileScanner::_get_block_impl(doris::RuntimeState*, doris::vectorized::Block*, bool*) at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/common/status.h:435 8# doris::vectorized::VScanner::get_block(doris::RuntimeState*, doris::vectorized::Block*, bool*) at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/vec/exec/scan/vscanner.cpp:0 9# doris::vectorized::ScannerScheduler::_scanner_scan(doris::vectorized::ScannerScheduler*, doris::vectorized::ScannerContext*, std::shared_ptr<doris::vectorized::VScanner>) at /home/zcp/repo_cen ter/doris_branch-2.0/doris/be/src/common/status.h:351 10# std::_Function_handler<void (), doris::vectorized::ScannerScheduler::_schedule_scanners(doris::vectorized::ScannerContext*)::$_1::operator()() const::{lambda()#3}>::_M_invoke(std::_Any_data co nst&) at /var/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/shared_ptr_base.h:701 11# doris::ThreadPool::dispatch_thread() at /home/zcp/repo_center/doris_branch-2.0/doris/be/src/util/threadpool.cpp:0 12# doris::Thread::supervise_thread(void*) at /var/local/ldb_toolchain/bin/../usr/include/pthread.h:562 13# ? 14# __clone ``` ### What You Expected? fixed ### How to Reproduce? _No response_ ### Anything Else? _No response_ ### Are you willing to submit PR? - [X] Yes I am willing to submit a PR! ### Code of Conduct - [X] I agree to follow this project's [Code of Conduct](https://www.apache.org/foundation/policies/conduct) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org