This is an automated email from the ASF dual-hosted git repository.

yiguolei 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 1db8a2d136 [bugfix](runtimefilter)fix runtimefilter access violation 
when stub is nullptr (#11180)
1db8a2d136 is described below

commit 1db8a2d136638b09b9867dfd8b5be457d9bcf3e0
Author: awakeljw <17329460+awake...@users.noreply.github.com>
AuthorDate: Tue Aug 2 16:57:17 2022 +0800

    [bugfix](runtimefilter)fix runtimefilter access violation when stub is 
nullptr (#11180)
---
 be/src/runtime/runtime_filter_mgr.cpp | 25 +++++++++++++------------
 1 file changed, 13 insertions(+), 12 deletions(-)

diff --git a/be/src/runtime/runtime_filter_mgr.cpp 
b/be/src/runtime/runtime_filter_mgr.cpp
index dd58feb1e2..85d0fab248 100644
--- a/be/src/runtime/runtime_filter_mgr.cpp
+++ b/be/src/runtime/runtime_filter_mgr.cpp
@@ -237,32 +237,33 @@ Status RuntimeFilterMergeControllerEntity::merge(const 
PMergeFilterRequest* requ
         std::vector<TRuntimeFilterTargetParams>& targets = cntVal->target_info;
         for (size_t i = 0; i < targets.size(); i++) {
             rpc_contexts.emplace_back(new PPublishFilterRpcContext);
-            rpc_contexts[i]->request = apply_request;
-            rpc_contexts[i]->request.set_filter_id(request->filter_id());
-            *rpc_contexts[i]->request.mutable_query_id() = request->query_id();
+            size_t cur = rpc_contexts.size() - 1;
+            rpc_contexts[cur]->request = apply_request;
+            rpc_contexts[cur]->request.set_filter_id(request->filter_id());
+            *rpc_contexts[cur]->request.mutable_query_id() = 
request->query_id();
             if (has_attachment) {
-                
rpc_contexts[i]->cntl.request_attachment().append(request_attachment);
+                
rpc_contexts[cur]->cntl.request_attachment().append(request_attachment);
             }
-            rpc_contexts[i]->cid = rpc_contexts[i]->cntl.call_id();
+            rpc_contexts[cur]->cid = rpc_contexts[cur]->cntl.call_id();
 
             // set fragment-id
-            auto request_fragment_id = 
rpc_contexts[i]->request.mutable_fragment_id();
-            
request_fragment_id->set_hi(targets[i].target_fragment_instance_id.hi);
-            
request_fragment_id->set_lo(targets[i].target_fragment_instance_id.lo);
+            auto request_fragment_id = 
rpc_contexts[cur]->request.mutable_fragment_id();
+            
request_fragment_id->set_hi(targets[cur].target_fragment_instance_id.hi);
+            
request_fragment_id->set_lo(targets[cur].target_fragment_instance_id.lo);
 
             std::shared_ptr<PBackendService_Stub> stub(
                     
ExecEnv::GetInstance()->brpc_internal_client_cache()->get_client(
                             targets[i].target_fragment_instance_addr));
-            VLOG_NOTICE << "send filter " << 
rpc_contexts[i]->request.filter_id()
+            VLOG_NOTICE << "send filter " << 
rpc_contexts[cur]->request.filter_id()
                         << " to:" << 
targets[i].target_fragment_instance_addr.hostname << ":"
                         << targets[i].target_fragment_instance_addr.port
-                        << rpc_contexts[i]->request.ShortDebugString();
+                        << rpc_contexts[cur]->request.ShortDebugString();
             if (stub == nullptr) {
                 rpc_contexts.pop_back();
                 continue;
             }
-            stub->apply_filter(&rpc_contexts[i]->cntl, 
&rpc_contexts[i]->request,
-                               &rpc_contexts[i]->response, brpc::DoNothing());
+            stub->apply_filter(&rpc_contexts[cur]->cntl, 
&rpc_contexts[cur]->request,
+                               &rpc_contexts[cur]->response, 
brpc::DoNothing());
         }
         for (auto& rpc_context : rpc_contexts) {
             brpc::Join(rpc_context->cid);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to