This is an automated email from the ASF dual-hosted git repository.
panxiaolei 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 8514df82ca8 [Bug](runtime-filter) check rf dependency is set and fix
wrong throw status (#44838)
8514df82ca8 is described below
commit 8514df82ca87716dd1e5b175817b6beac411fb60
Author: Pxl <[email protected]>
AuthorDate: Mon Dec 2 14:29:04 2024 +0800
[Bug](runtime-filter) check rf dependency is set and fix wrong throw status
(#44838)
### What problem does this PR solve?
1. check rf dependency is set
2. fix wrong throw status, introduced by
https://github.com/apache/doris/issues/44697
3. catch throw exception on buildsink::close
---
be/src/exprs/runtime_filter.h | 5 +++--
be/src/pipeline/exec/hashjoin_build_sink.cpp | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/be/src/exprs/runtime_filter.h b/be/src/exprs/runtime_filter.h
index a1fdfbf07d2..63ef3e2dbd4 100644
--- a/be/src/exprs/runtime_filter.h
+++ b/be/src/exprs/runtime_filter.h
@@ -355,8 +355,9 @@ public:
const std::shared_ptr<pipeline::CountedFinishDependency>&
dependency);
int64_t get_synced_size() const {
- if (_synced_size == -1) {
- throw Status::InternalError("sync filter size meet error, filter:
{}", debug_string());
+ if (_synced_size == -1 || !_dependency) {
+ throw Exception(doris::ErrorCode::INTERNAL_ERROR,
+ "sync filter size meet error, filter: {}",
debug_string());
}
return _synced_size;
}
diff --git a/be/src/pipeline/exec/hashjoin_build_sink.cpp
b/be/src/pipeline/exec/hashjoin_build_sink.cpp
index cec0c77da8a..864927e1721 100644
--- a/be/src/pipeline/exec/hashjoin_build_sink.cpp
+++ b/be/src/pipeline/exec/hashjoin_build_sink.cpp
@@ -156,7 +156,8 @@ Status HashJoinBuildSinkLocalState::close(RuntimeState*
state, Status exec_statu
uint64_t hash_table_size = block ? block->rows() : 0;
{
SCOPED_TIMER(_runtime_filter_init_timer);
- RETURN_IF_ERROR(_runtime_filter_slots->init_filters(state,
hash_table_size));
+ RETURN_IF_ERROR_OR_CATCH_EXCEPTION(
+ _runtime_filter_slots->init_filters(state,
hash_table_size));
RETURN_IF_ERROR(_runtime_filter_slots->ignore_filters(state));
}
if (hash_table_size > 1) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]