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 <x...@selectdb.com>
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: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to