This is an automated email from the ASF dual-hosted git repository.
dataroaring pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 205849d49b6 [fix](local exchange) Fix DCHECK failure (#39586)
205849d49b6 is described below
commit 205849d49b670929d86222cde2970c7964f8586b
Author: Gabriel <[email protected]>
AuthorDate: Wed Aug 21 17:28:11 2024 +0800
[fix](local exchange) Fix DCHECK failure (#39586)
## Proposed changes
F20240819 00:40:30.994563 9829 local_exchanger.h:171] Check failed:
ref_count.load() == 0 (1 vs. 0)
Check failure stack trace: ***
@ 0x5564557bcca6 google::LogMessage::SendToLog()
@ 0x5564557b96f0 google::LogMessage::Flush()
@ 0x5564557bd4e9 google::LogMessageFatal::~LogMessageFatal()
@ 0x556455444baa doris::pipeline::BlockWrapper::~BlockWrapper()
@ 0x55641dff19b5 std::_Sp_counted_base<>::_M_release()
@ 0x5564554538fa
moodycamel::ConcurrentQueue<>::ImplicitProducer::~ImplicitProducer()
@ 0x55645543dcb2 moodycamel::ConcurrentQueue<>::~ConcurrentQueue()
@ 0x55645543d9d3 std::vector<>::~vector()
@ 0x5564554337a8
doris::pipeline::PassToOneExchanger::~PassToOneExchanger()
@ 0x556450f0fdec std::unique_ptr<>::~unique_ptr()
@ 0x556450ebac12
doris::pipeline::LocalExchangeSharedState::~LocalExchangeSharedState()
@ 0x55641dff19b5 std::_Sp_counted_base<>::_M_release()
@ 0x556454335ddd std::_Rb_tree<>::_M_erase()
@ 0x55645551597a doris::pipeline::PipelineTask::finalize()
@ 0x556455549591 doris::pipeline::_close_task()
@ 0x55645554a2b1 doris::pipeline::TaskScheduler::_do_work()
@ 0x5564226327dc doris::ThreadPool::dispatch_thread()
@ 0x55642260a6d8 doris::Thread::supervise_thread()
@ 0x7f4f88d9dac3 (unknown)
@ 0x7f4f88e2f850 (unknown)
@ (nil) (unknown)
<!--Describe your changes.-->
---
be/src/pipeline/local_exchange/local_exchanger.cpp | 14 ++++++++++++--
be/src/pipeline/local_exchange/local_exchanger.h | 2 +-
2 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/be/src/pipeline/local_exchange/local_exchanger.cpp
b/be/src/pipeline/local_exchange/local_exchanger.cpp
index 79fbb0f8d06..be4071cef9a 100644
--- a/be/src/pipeline/local_exchange/local_exchanger.cpp
+++ b/be/src/pipeline/local_exchange/local_exchanger.cpp
@@ -290,7 +290,17 @@ void
PassthroughExchanger::close(LocalExchangeSourceLocalState& local_state) {
bool eos;
_data_queue[local_state._channel_id].set_eos();
while (_dequeue_data(local_state, wrapper, &eos, &next_block)) {
- next_block = vectorized::Block();
+ // do nothing
+ }
+}
+
+void PassToOneExchanger::close(LocalExchangeSourceLocalState& local_state) {
+ vectorized::Block next_block;
+ BlockWrapperSPtr wrapper;
+ bool eos;
+ _data_queue[local_state._channel_id].set_eos();
+ while (_dequeue_data(local_state, wrapper, &eos, &next_block)) {
+ // do nothing
}
}
@@ -551,7 +561,7 @@ void
AdaptivePassthroughExchanger::close(LocalExchangeSourceLocalState& local_st
BlockWrapperSPtr wrapper;
_data_queue[local_state._channel_id].set_eos();
while (_dequeue_data(local_state, wrapper, &eos, &next_block)) {
- next_block = vectorized::Block();
+ // do nothing
}
}
diff --git a/be/src/pipeline/local_exchange/local_exchanger.h
b/be/src/pipeline/local_exchange/local_exchanger.h
index 71c388b2323..72c0a0ed3a6 100644
--- a/be/src/pipeline/local_exchange/local_exchanger.h
+++ b/be/src/pipeline/local_exchange/local_exchanger.h
@@ -279,7 +279,7 @@ public:
Status get_block(RuntimeState* state, vectorized::Block* block, bool* eos,
LocalExchangeSourceLocalState& local_state) override;
ExchangeType get_type() const override { return ExchangeType::PASS_TO_ONE;
}
- void close(LocalExchangeSourceLocalState& local_state) override {}
+ void close(LocalExchangeSourceLocalState& local_state) override;
};
class LocalMergeSortExchanger final : public Exchanger<BlockWrapperSPtr> {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]