/root/doris/be/src/util/brpc_closure.h
Line | Count | Source (jump to first uncovered line) |
1 | | // Licensed to the Apache Software Foundation (ASF) under one |
2 | | // or more contributor license agreements. See the NOTICE file |
3 | | // distributed with this work for additional information |
4 | | // regarding copyright ownership. The ASF licenses this file |
5 | | // to you under the Apache License, Version 2.0 (the |
6 | | // "License"); you may not use this file except in compliance |
7 | | // with the License. You may obtain a copy of the License at |
8 | | // |
9 | | // http://www.apache.org/licenses/LICENSE-2.0 |
10 | | // |
11 | | // Unless required by applicable law or agreed to in writing, |
12 | | // software distributed under the License is distributed on an |
13 | | // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
14 | | // KIND, either express or implied. See the License for the |
15 | | // specific language governing permissions and limitations |
16 | | // under the License. |
17 | | |
18 | | #pragma once |
19 | | |
20 | | #include <google/protobuf/stubs/common.h> |
21 | | |
22 | | #include <atomic> |
23 | | #include <utility> |
24 | | |
25 | | #include "runtime/query_context.h" |
26 | | #include "runtime/thread_context.h" |
27 | | #include "service/brpc.h" |
28 | | |
29 | | namespace doris { |
30 | | |
31 | | template <typename Response> |
32 | | class DummyBrpcCallback { |
33 | | ENABLE_FACTORY_CREATOR(DummyBrpcCallback); |
34 | | |
35 | | public: |
36 | | using ResponseType = Response; |
37 | 26 | DummyBrpcCallback() { |
38 | 26 | cntl_ = std::make_shared<brpc::Controller>(); |
39 | 26 | response_ = std::make_shared<Response>(); |
40 | 26 | } _ZN5doris17DummyBrpcCallbackINS_19PMultiGetResponseV2EEC2Ev Line | Count | Source | 37 | 4 | DummyBrpcCallback() { | 38 | 4 | cntl_ = std::make_shared<brpc::Controller>(); | 39 | 4 | response_ = std::make_shared<Response>(); | 40 | 4 | } |
Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_23PTabletWriteSlaveResultEEC2Ev Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_20PMergeFilterResponseEEC2Ev Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_23PSyncFilterSizeResponseEEC2Ev Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_22PPublishFilterResponseEEC2Ev Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_23PSendFilterSizeResponseEEC2Ev Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_27PTabletWriteSlaveDoneResultEEC2Ev _ZN5doris17DummyBrpcCallbackINS_19PTransmitDataResultEEC2Ev Line | Count | Source | 37 | 22 | DummyBrpcCallback() { | 38 | 22 | cntl_ = std::make_shared<brpc::Controller>(); | 39 | 22 | response_ = std::make_shared<Response>(); | 40 | 22 | } |
Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_27PTabletWriterAddBlockResultEEC2Ev Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_23PTabletWriterOpenResultEEC2Ev Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_25PTabletWriterCancelResultEEC2Ev |
41 | | |
42 | 26 | virtual ~DummyBrpcCallback() = default; _ZN5doris17DummyBrpcCallbackINS_19PMultiGetResponseV2EED2Ev Line | Count | Source | 42 | 4 | virtual ~DummyBrpcCallback() = default; |
Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_23PTabletWriteSlaveResultEED2Ev Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_20PMergeFilterResponseEED2Ev Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_23PSyncFilterSizeResponseEED2Ev Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_22PPublishFilterResponseEED2Ev Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_23PSendFilterSizeResponseEED2Ev Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_27PTabletWriteSlaveDoneResultEED2Ev _ZN5doris17DummyBrpcCallbackINS_19PTransmitDataResultEED2Ev Line | Count | Source | 42 | 22 | virtual ~DummyBrpcCallback() = default; |
Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_27PTabletWriterAddBlockResultEED2Ev Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_23PTabletWriterOpenResultEED2Ev Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_25PTabletWriterCancelResultEED2Ev |
43 | | |
44 | 0 | virtual void call() {} Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_19PTransmitDataResultEE4callEv Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_19PMultiGetResponseV2EE4callEv Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_23PTabletWriteSlaveResultEE4callEv Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_20PMergeFilterResponseEE4callEv Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_23PSyncFilterSizeResponseEE4callEv Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_22PPublishFilterResponseEE4callEv Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_23PSendFilterSizeResponseEE4callEv Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_27PTabletWriteSlaveDoneResultEE4callEv Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_27PTabletWriterAddBlockResultEE4callEv Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_23PTabletWriterOpenResultEE4callEv Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_25PTabletWriterCancelResultEE4callEv |
45 | | |
46 | 0 | virtual void join() { brpc::Join(cntl_->call_id()); } Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_19PTransmitDataResultEE4joinEv Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_19PMultiGetResponseV2EE4joinEv Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_23PTabletWriteSlaveResultEE4joinEv Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_20PMergeFilterResponseEE4joinEv Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_23PSyncFilterSizeResponseEE4joinEv Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_22PPublishFilterResponseEE4joinEv Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_23PSendFilterSizeResponseEE4joinEv Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_27PTabletWriteSlaveDoneResultEE4joinEv Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_27PTabletWriterAddBlockResultEE4joinEv Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_23PTabletWriterOpenResultEE4joinEv Unexecuted instantiation: _ZN5doris17DummyBrpcCallbackINS_25PTabletWriterCancelResultEE4joinEv |
47 | | |
48 | | // controller has to be the same lifecycle with the closure, because brpc may use |
49 | | // it in any stage of the rpc. |
50 | | std::shared_ptr<brpc::Controller> cntl_; |
51 | | // We do not know if brpc will use request or response after brpc method returns. |
52 | | // So that we need keep a shared ptr here to ensure that brpc could use req/rep |
53 | | // at any stage. |
54 | | std::shared_ptr<Response> response_; |
55 | | }; |
56 | | |
57 | | // The closure will be deleted after callback. |
58 | | // It could only be created by using shared ptr or unique ptr. |
59 | | // It will hold a weak ptr of T and call run of T |
60 | | // Callback() { |
61 | | // xxxx; |
62 | | // public |
63 | | // void run() { |
64 | | // logxxx |
65 | | // } |
66 | | // } |
67 | | // |
68 | | // std::shared_ptr<Callback> b; |
69 | | // |
70 | | // std::unique_ptr<AutoReleaseClosure> a(b); |
71 | | // brpc_call(a.release()); |
72 | | |
73 | | template <typename T> |
74 | | concept HasStatus = requires(T* response) { response->status(); }; |
75 | | |
76 | | template <typename Request, typename Callback> |
77 | | class AutoReleaseClosure : public google::protobuf::Closure { |
78 | | using Weak = typename std::shared_ptr<Callback>::weak_type; |
79 | | using ResponseType = typename Callback::ResponseType; |
80 | | ENABLE_FACTORY_CREATOR(AutoReleaseClosure); |
81 | | |
82 | | public: |
83 | | AutoReleaseClosure(std::shared_ptr<Request> req, std::shared_ptr<Callback> callback, |
84 | | std::weak_ptr<QueryContext> context = {}, std::string_view error_msg = {}) |
85 | 28 | : request_(req), callback_(callback), context_(std::move(context)) { |
86 | 28 | this->cntl_ = callback->cntl_; |
87 | 28 | this->response_ = callback->response_; |
88 | 28 | } Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_24PTabletWriteSlaveRequestENS_17DummyBrpcCallbackINS_23PTabletWriteSlaveResultEEEEC2ESt10shared_ptrIS1_ES6_IS4_ESt8weak_ptrINS_12QueryContextEESt17basic_string_viewIcSt11char_traitsIcEE Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_19PMergeFilterRequestENS_17DummyBrpcCallbackINS_20PMergeFilterResponseEEEEC2ESt10shared_ptrIS1_ES6_IS4_ESt8weak_ptrINS_12QueryContextEESt17basic_string_viewIcSt11char_traitsIcEE Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_22PSyncFilterSizeRequestENS_17DummyBrpcCallbackINS_23PSyncFilterSizeResponseEEEEC2ESt10shared_ptrIS1_ES6_IS4_ESt8weak_ptrINS_12QueryContextEESt17basic_string_viewIcSt11char_traitsIcEE Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_23PPublishFilterRequestV2ENS_17DummyBrpcCallbackINS_22PPublishFilterResponseEEEEC2ESt10shared_ptrIS1_ES6_IS4_ESt8weak_ptrINS_12QueryContextEESt17basic_string_viewIcSt11char_traitsIcEE Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_22PSendFilterSizeRequestENS_17DummyBrpcCallbackINS_23PSendFilterSizeResponseEEEEC2ESt10shared_ptrIS1_ES6_IS4_ESt8weak_ptrINS_12QueryContextEESt17basic_string_viewIcSt11char_traitsIcEE Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_28PTabletWriteSlaveDoneRequestENS_17DummyBrpcCallbackINS_27PTabletWriteSlaveDoneResultEEEEC2ESt10shared_ptrIS1_ES6_IS4_ESt8weak_ptrINS_12QueryContextEESt17basic_string_viewIcSt11char_traitsIcEE _ZN5doris18AutoReleaseClosureINS_19PTransmitDataParamsENS_8pipeline20ExchangeSendCallbackINS_19PTransmitDataResultEEEEC2ESt10shared_ptrIS1_ES7_IS5_ESt8weak_ptrINS_12QueryContextEESt17basic_string_viewIcSt11char_traitsIcEE Line | Count | Source | 85 | 28 | : request_(req), callback_(callback), context_(std::move(context)) { | 86 | 28 | this->cntl_ = callback->cntl_; | 87 | 28 | this->response_ = callback->response_; | 88 | 28 | } |
Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_24PTabletWriterOpenRequestENS_17DummyBrpcCallbackINS_23PTabletWriterOpenResultEEEEC2ESt10shared_ptrIS1_ES6_IS4_ESt8weak_ptrINS_12QueryContextEESt17basic_string_viewIcSt11char_traitsIcEE Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_28PTabletWriterAddBlockRequestENS_10vectorized18WriteBlockCallbackINS_27PTabletWriterAddBlockResultEEEEC2ESt10shared_ptrIS1_ES7_IS5_ESt8weak_ptrINS_12QueryContextEESt17basic_string_viewIcSt11char_traitsIcEE Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_26PTabletWriterCancelRequestENS_17DummyBrpcCallbackINS_25PTabletWriterCancelResultEEEEC2ESt10shared_ptrIS1_ES6_IS4_ESt8weak_ptrINS_12QueryContextEESt17basic_string_viewIcSt11char_traitsIcEE Unexecuted instantiation: _ZN5doris18AutoReleaseClosureIiNS_17DummyBrpcCallbackINS_19PMultiGetResponseV2EEEEC2ESt10shared_ptrIiES5_IS3_ESt8weak_ptrINS_12QueryContextEESt17basic_string_viewIcSt11char_traitsIcEE |
89 | | |
90 | 28 | ~AutoReleaseClosure() override = default; Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_24PTabletWriteSlaveRequestENS_17DummyBrpcCallbackINS_23PTabletWriteSlaveResultEEEED2Ev Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_19PMergeFilterRequestENS_17DummyBrpcCallbackINS_20PMergeFilterResponseEEEED2Ev Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_22PSyncFilterSizeRequestENS_17DummyBrpcCallbackINS_23PSyncFilterSizeResponseEEEED2Ev Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_23PPublishFilterRequestV2ENS_17DummyBrpcCallbackINS_22PPublishFilterResponseEEEED2Ev Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_22PSendFilterSizeRequestENS_17DummyBrpcCallbackINS_23PSendFilterSizeResponseEEEED2Ev Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_28PTabletWriteSlaveDoneRequestENS_17DummyBrpcCallbackINS_27PTabletWriteSlaveDoneResultEEEED2Ev _ZN5doris18AutoReleaseClosureINS_19PTransmitDataParamsENS_8pipeline20ExchangeSendCallbackINS_19PTransmitDataResultEEEED2Ev Line | Count | Source | 90 | 28 | ~AutoReleaseClosure() override = default; |
Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_24PTabletWriterOpenRequestENS_17DummyBrpcCallbackINS_23PTabletWriterOpenResultEEEED2Ev Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_28PTabletWriterAddBlockRequestENS_10vectorized18WriteBlockCallbackINS_27PTabletWriterAddBlockResultEEEED2Ev Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_26PTabletWriterCancelRequestENS_17DummyBrpcCallbackINS_25PTabletWriterCancelResultEEEED2Ev Unexecuted instantiation: _ZN5doris18AutoReleaseClosureIiNS_17DummyBrpcCallbackINS_19PMultiGetResponseV2EEEED2Ev |
91 | | |
92 | | // Will delete itself |
93 | 28 | void Run() override { |
94 | 28 | Defer defer {[&]() { delete this; }}; Unexecuted instantiation: _ZZN5doris18AutoReleaseClosureINS_24PTabletWriteSlaveRequestENS_17DummyBrpcCallbackINS_23PTabletWriteSlaveResultEEEE3RunEvENKUlvE_clEv Unexecuted instantiation: _ZZN5doris18AutoReleaseClosureINS_19PMergeFilterRequestENS_17DummyBrpcCallbackINS_20PMergeFilterResponseEEEE3RunEvENKUlvE_clEv Unexecuted instantiation: _ZZN5doris18AutoReleaseClosureINS_22PSyncFilterSizeRequestENS_17DummyBrpcCallbackINS_23PSyncFilterSizeResponseEEEE3RunEvENKUlvE_clEv Unexecuted instantiation: _ZZN5doris18AutoReleaseClosureINS_23PPublishFilterRequestV2ENS_17DummyBrpcCallbackINS_22PPublishFilterResponseEEEE3RunEvENKUlvE_clEv Unexecuted instantiation: _ZZN5doris18AutoReleaseClosureINS_22PSendFilterSizeRequestENS_17DummyBrpcCallbackINS_23PSendFilterSizeResponseEEEE3RunEvENKUlvE_clEv Unexecuted instantiation: _ZZN5doris18AutoReleaseClosureINS_28PTabletWriteSlaveDoneRequestENS_17DummyBrpcCallbackINS_27PTabletWriteSlaveDoneResultEEEE3RunEvENKUlvE_clEv _ZZN5doris18AutoReleaseClosureINS_19PTransmitDataParamsENS_8pipeline20ExchangeSendCallbackINS_19PTransmitDataResultEEEE3RunEvENKUlvE_clEv Line | Count | Source | 94 | 28 | Defer defer {[&]() { delete this; }}; |
Unexecuted instantiation: _ZZN5doris18AutoReleaseClosureINS_24PTabletWriterOpenRequestENS_17DummyBrpcCallbackINS_23PTabletWriterOpenResultEEEE3RunEvENKUlvE_clEv Unexecuted instantiation: _ZZN5doris18AutoReleaseClosureINS_28PTabletWriterAddBlockRequestENS_10vectorized18WriteBlockCallbackINS_27PTabletWriterAddBlockResultEEEE3RunEvENKUlvE_clEv Unexecuted instantiation: _ZZN5doris18AutoReleaseClosureINS_26PTabletWriterCancelRequestENS_17DummyBrpcCallbackINS_25PTabletWriterCancelResultEEEE3RunEvENKUlvE_clEv Unexecuted instantiation: _ZZN5doris18AutoReleaseClosureIiNS_17DummyBrpcCallbackINS_19PMultiGetResponseV2EEEE3RunEvENKUlvE_clEv |
95 | | // If lock failed, it means the callback object is deconstructed, then no need |
96 | | // to deal with the callback any more. |
97 | 28 | if (auto tmp = callback_.lock()) { |
98 | 28 | tmp->call(); |
99 | 28 | } |
100 | 28 | if (cntl_->Failed()) { |
101 | 1 | _process_if_rpc_failed(); |
102 | 27 | } else { |
103 | 27 | _process_status<ResponseType>(response_.get()); |
104 | 27 | } |
105 | 28 | } _ZN5doris18AutoReleaseClosureINS_19PTransmitDataParamsENS_8pipeline20ExchangeSendCallbackINS_19PTransmitDataResultEEEE3RunEv Line | Count | Source | 93 | 28 | void Run() override { | 94 | 28 | Defer defer {[&]() { delete this; }}; | 95 | | // If lock failed, it means the callback object is deconstructed, then no need | 96 | | // to deal with the callback any more. | 97 | 28 | if (auto tmp = callback_.lock()) { | 98 | 28 | tmp->call(); | 99 | 28 | } | 100 | 28 | if (cntl_->Failed()) { | 101 | 1 | _process_if_rpc_failed(); | 102 | 27 | } else { | 103 | 27 | _process_status<ResponseType>(response_.get()); | 104 | 27 | } | 105 | 28 | } |
Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_24PTabletWriteSlaveRequestENS_17DummyBrpcCallbackINS_23PTabletWriteSlaveResultEEEE3RunEv Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_19PMergeFilterRequestENS_17DummyBrpcCallbackINS_20PMergeFilterResponseEEEE3RunEv Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_22PSyncFilterSizeRequestENS_17DummyBrpcCallbackINS_23PSyncFilterSizeResponseEEEE3RunEv Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_23PPublishFilterRequestV2ENS_17DummyBrpcCallbackINS_22PPublishFilterResponseEEEE3RunEv Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_22PSendFilterSizeRequestENS_17DummyBrpcCallbackINS_23PSendFilterSizeResponseEEEE3RunEv Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_28PTabletWriteSlaveDoneRequestENS_17DummyBrpcCallbackINS_27PTabletWriteSlaveDoneResultEEEE3RunEv Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_24PTabletWriterOpenRequestENS_17DummyBrpcCallbackINS_23PTabletWriterOpenResultEEEE3RunEv Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_28PTabletWriterAddBlockRequestENS_10vectorized18WriteBlockCallbackINS_27PTabletWriterAddBlockResultEEEE3RunEv Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_26PTabletWriterCancelRequestENS_17DummyBrpcCallbackINS_25PTabletWriterCancelResultEEEE3RunEv Unexecuted instantiation: _ZN5doris18AutoReleaseClosureIiNS_17DummyBrpcCallbackINS_19PMultiGetResponseV2EEEE3RunEv |
106 | | |
107 | | // controller has to be the same lifecycle with the closure, because brpc may use |
108 | | // it in any stage of the rpc. |
109 | | std::shared_ptr<brpc::Controller> cntl_; |
110 | | // We do not know if brpc will use request or response after brpc method returns. |
111 | | // So that we need keep a shared ptr here to ensure that brpc could use req/rep |
112 | | // at any stage. |
113 | | std::shared_ptr<Request> request_; |
114 | | std::shared_ptr<ResponseType> response_; |
115 | | std::string error_msg_; |
116 | | |
117 | | protected: |
118 | 1 | virtual void _process_if_rpc_failed() { |
119 | 1 | std::string error_msg = |
120 | 1 | fmt::format("RPC meet failed: {} {}", cntl_->ErrorText(), error_msg_); |
121 | 1 | if (auto ctx = context_.lock(); ctx) { |
122 | 0 | ctx->cancel(Status::NetworkError(error_msg)); |
123 | 1 | } else { |
124 | 1 | LOG(WARNING) << error_msg; |
125 | 1 | } |
126 | 1 | } _ZN5doris18AutoReleaseClosureINS_19PTransmitDataParamsENS_8pipeline20ExchangeSendCallbackINS_19PTransmitDataResultEEEE22_process_if_rpc_failedEv Line | Count | Source | 118 | 1 | virtual void _process_if_rpc_failed() { | 119 | 1 | std::string error_msg = | 120 | 1 | fmt::format("RPC meet failed: {} {}", cntl_->ErrorText(), error_msg_); | 121 | 1 | if (auto ctx = context_.lock(); ctx) { | 122 | 0 | ctx->cancel(Status::NetworkError(error_msg)); | 123 | 1 | } else { | 124 | 1 | LOG(WARNING) << error_msg; | 125 | 1 | } | 126 | 1 | } |
Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_24PTabletWriteSlaveRequestENS_17DummyBrpcCallbackINS_23PTabletWriteSlaveResultEEEE22_process_if_rpc_failedEv Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_19PMergeFilterRequestENS_17DummyBrpcCallbackINS_20PMergeFilterResponseEEEE22_process_if_rpc_failedEv Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_22PSyncFilterSizeRequestENS_17DummyBrpcCallbackINS_23PSyncFilterSizeResponseEEEE22_process_if_rpc_failedEv Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_23PPublishFilterRequestV2ENS_17DummyBrpcCallbackINS_22PPublishFilterResponseEEEE22_process_if_rpc_failedEv Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_22PSendFilterSizeRequestENS_17DummyBrpcCallbackINS_23PSendFilterSizeResponseEEEE22_process_if_rpc_failedEv Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_28PTabletWriteSlaveDoneRequestENS_17DummyBrpcCallbackINS_27PTabletWriteSlaveDoneResultEEEE22_process_if_rpc_failedEv Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_24PTabletWriterOpenRequestENS_17DummyBrpcCallbackINS_23PTabletWriterOpenResultEEEE22_process_if_rpc_failedEv Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_28PTabletWriterAddBlockRequestENS_10vectorized18WriteBlockCallbackINS_27PTabletWriterAddBlockResultEEEE22_process_if_rpc_failedEv Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_26PTabletWriterCancelRequestENS_17DummyBrpcCallbackINS_25PTabletWriterCancelResultEEEE22_process_if_rpc_failedEv Unexecuted instantiation: _ZN5doris18AutoReleaseClosureIiNS_17DummyBrpcCallbackINS_19PMultiGetResponseV2EEEE22_process_if_rpc_failedEv |
127 | | |
128 | 2 | virtual void _process_if_meet_error_status(const Status& status) { |
129 | 2 | if (status.is<ErrorCode::END_OF_FILE>()) { |
130 | | // no need to log END_OF_FILE, reduce the unlessful log |
131 | 2 | return; |
132 | 2 | } |
133 | 0 | if (auto ctx = context_.lock(); ctx) { |
134 | 0 | ctx->cancel(status); |
135 | 0 | } else { |
136 | 0 | LOG(WARNING) << "RPC meet error status: " << status; |
137 | 0 | } |
138 | 0 | } _ZN5doris18AutoReleaseClosureINS_19PTransmitDataParamsENS_8pipeline20ExchangeSendCallbackINS_19PTransmitDataResultEEEE29_process_if_meet_error_statusERKNS_6StatusE Line | Count | Source | 128 | 2 | virtual void _process_if_meet_error_status(const Status& status) { | 129 | 2 | if (status.is<ErrorCode::END_OF_FILE>()) { | 130 | | // no need to log END_OF_FILE, reduce the unlessful log | 131 | 2 | return; | 132 | 2 | } | 133 | 0 | if (auto ctx = context_.lock(); ctx) { | 134 | 0 | ctx->cancel(status); | 135 | 0 | } else { | 136 | 0 | LOG(WARNING) << "RPC meet error status: " << status; | 137 | 0 | } | 138 | 0 | } |
Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_24PTabletWriteSlaveRequestENS_17DummyBrpcCallbackINS_23PTabletWriteSlaveResultEEEE29_process_if_meet_error_statusERKNS_6StatusE Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_19PMergeFilterRequestENS_17DummyBrpcCallbackINS_20PMergeFilterResponseEEEE29_process_if_meet_error_statusERKNS_6StatusE Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_22PSyncFilterSizeRequestENS_17DummyBrpcCallbackINS_23PSyncFilterSizeResponseEEEE29_process_if_meet_error_statusERKNS_6StatusE Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_23PPublishFilterRequestV2ENS_17DummyBrpcCallbackINS_22PPublishFilterResponseEEEE29_process_if_meet_error_statusERKNS_6StatusE Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_22PSendFilterSizeRequestENS_17DummyBrpcCallbackINS_23PSendFilterSizeResponseEEEE29_process_if_meet_error_statusERKNS_6StatusE Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_28PTabletWriteSlaveDoneRequestENS_17DummyBrpcCallbackINS_27PTabletWriteSlaveDoneResultEEEE29_process_if_meet_error_statusERKNS_6StatusE Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_24PTabletWriterOpenRequestENS_17DummyBrpcCallbackINS_23PTabletWriterOpenResultEEEE29_process_if_meet_error_statusERKNS_6StatusE Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_28PTabletWriterAddBlockRequestENS_10vectorized18WriteBlockCallbackINS_27PTabletWriterAddBlockResultEEEE29_process_if_meet_error_statusERKNS_6StatusE Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_26PTabletWriterCancelRequestENS_17DummyBrpcCallbackINS_25PTabletWriterCancelResultEEEE29_process_if_meet_error_statusERKNS_6StatusE Unexecuted instantiation: _ZN5doris18AutoReleaseClosureIiNS_17DummyBrpcCallbackINS_19PMultiGetResponseV2EEEE29_process_if_meet_error_statusERKNS_6StatusE |
139 | | |
140 | | private: |
141 | | template <typename Response> |
142 | 0 | void _process_status(Response* response) {} |
143 | | |
144 | | template <HasStatus Response> |
145 | 27 | void _process_status(Response* response) { |
146 | 27 | if (Status status = Status::create(response->status()); !status.ok()) { |
147 | 2 | _process_if_meet_error_status(status); |
148 | 2 | } |
149 | 27 | } _ZN5doris18AutoReleaseClosureINS_19PTransmitDataParamsENS_8pipeline20ExchangeSendCallbackINS_19PTransmitDataResultEEEE15_process_statusIS4_EEvPT_ Line | Count | Source | 145 | 27 | void _process_status(Response* response) { | 146 | 27 | if (Status status = Status::create(response->status()); !status.ok()) { | 147 | 2 | _process_if_meet_error_status(status); | 148 | 2 | } | 149 | 27 | } |
Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_24PTabletWriteSlaveRequestENS_17DummyBrpcCallbackINS_23PTabletWriteSlaveResultEEEE15_process_statusIS3_EEvPT_ Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_19PMergeFilterRequestENS_17DummyBrpcCallbackINS_20PMergeFilterResponseEEEE15_process_statusIS3_EEvPT_ Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_22PSyncFilterSizeRequestENS_17DummyBrpcCallbackINS_23PSyncFilterSizeResponseEEEE15_process_statusIS3_EEvPT_ Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_23PPublishFilterRequestV2ENS_17DummyBrpcCallbackINS_22PPublishFilterResponseEEEE15_process_statusIS3_EEvPT_ Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_22PSendFilterSizeRequestENS_17DummyBrpcCallbackINS_23PSendFilterSizeResponseEEEE15_process_statusIS3_EEvPT_ Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_28PTabletWriteSlaveDoneRequestENS_17DummyBrpcCallbackINS_27PTabletWriteSlaveDoneResultEEEE15_process_statusIS3_EEvPT_ Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_24PTabletWriterOpenRequestENS_17DummyBrpcCallbackINS_23PTabletWriterOpenResultEEEE15_process_statusIS3_EEvPT_ Unexecuted instantiation: _ZN5doris18AutoReleaseClosureINS_28PTabletWriterAddBlockRequestENS_10vectorized18WriteBlockCallbackINS_27PTabletWriterAddBlockResultEEEE15_process_statusIS4_EEvPT_ Unexecuted instantiation: _ZN5doris18AutoReleaseClosureIiNS_17DummyBrpcCallbackINS_19PMultiGetResponseV2EEEE15_process_statusIS2_EEvPT_ |
150 | | // Use a weak ptr to keep the callback, so that the callback can be deleted if the main |
151 | | // thread is freed. |
152 | | Weak callback_; |
153 | | std::weak_ptr<QueryContext> context_; |
154 | | }; |
155 | | |
156 | | } // namespace doris |