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

Reply via email to