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

yiguolei pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git

commit 316ab01afe20d4673dda5ca3ba41b00def748a6b
Author: zhengyu <[email protected]>
AuthorDate: Mon Aug 21 21:00:49 2023 +0800

    [fix](InternalService) add short-cut return when offer failed (#23239)
    
    During offer_failed(), rpc done will be executed so the response will be
    sent and released. Further access to such object will cause NPE error.
    So let us just return after offer_failed().
---
 be/src/service/internal_service.cpp | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/be/src/service/internal_service.cpp 
b/be/src/service/internal_service.cpp
index 1bbecfca4e..2e35ca99ef 100644
--- a/be/src/service/internal_service.cpp
+++ b/be/src/service/internal_service.cpp
@@ -274,6 +274,7 @@ void 
PInternalServiceImpl::tablet_writer_open(google::protobuf::RpcController* c
     });
     if (!ret) {
         offer_failed(response, done, _light_work_pool);
+        return;
     }
 }
 
@@ -286,6 +287,7 @@ void 
PInternalServiceImpl::exec_plan_fragment(google::protobuf::RpcController* c
     });
     if (!ret) {
         offer_failed(response, done, _light_work_pool);
+        return;
     }
 }
 
@@ -322,6 +324,7 @@ void 
PInternalServiceImpl::exec_plan_fragment_prepare(google::protobuf::RpcContr
     });
     if (!ret) {
         offer_failed(response, done, _light_work_pool);
+        return;
     }
 }
 
@@ -338,6 +341,7 @@ void 
PInternalServiceImpl::exec_plan_fragment_start(google::protobuf::RpcControl
     });
     if (!ret) {
         offer_failed(result, done, _light_work_pool);
+        return;
     }
 }
 
@@ -350,6 +354,7 @@ void 
PInternalServiceImpl::tablet_writer_add_block(google::protobuf::RpcControll
     });
     if (!ret) {
         offer_failed(response, done, _heavy_work_pool);
+        return;
     }
 }
 
@@ -371,6 +376,7 @@ void PInternalServiceImpl::tablet_writer_add_block_by_http(
     });
     if (!ret) {
         offer_failed(response, done, _heavy_work_pool);
+        return;
     }
 }
 
@@ -400,6 +406,7 @@ void 
PInternalServiceImpl::_tablet_writer_add_block(google::protobuf::RpcControl
     });
     if (!ret) {
         offer_failed(response, done, _heavy_work_pool);
+        return;
     }
 }
 
@@ -421,6 +428,7 @@ void 
PInternalServiceImpl::tablet_writer_cancel(google::protobuf::RpcController*
     });
     if (!ret) {
         offer_failed(response, done, _light_work_pool);
+        return;
     }
 }
 
@@ -498,6 +506,7 @@ void 
PInternalServiceImpl::cancel_plan_fragment(google::protobuf::RpcController*
     });
     if (!ret) {
         offer_failed(result, done, _light_work_pool);
+        return;
     }
 }
 
@@ -511,6 +520,7 @@ void 
PInternalServiceImpl::fetch_data(google::protobuf::RpcController* controlle
     });
     if (!ret) {
         offer_failed(result, done, _heavy_work_pool);
+        return;
     }
 }
 
@@ -615,6 +625,7 @@ void 
PInternalServiceImpl::fetch_table_schema(google::protobuf::RpcController* c
     });
     if (!ret) {
         offer_failed(result, done, _heavy_work_pool);
+        return;
     }
 }
 
@@ -642,6 +653,7 @@ void 
PInternalServiceImpl::tablet_fetch_data(google::protobuf::RpcController* co
     });
     if (!ret) {
         offer_failed(response, done, _light_work_pool);
+        return;
     }
 }
 
@@ -654,6 +666,7 @@ void 
PInternalServiceImpl::get_column_ids_by_tablet_ids(google::protobuf::RpcCon
     });
     if (!ret) {
         offer_failed(response, done, _light_work_pool);
+        return;
     }
 }
 
@@ -770,6 +783,7 @@ void 
PInternalServiceImpl::get_info(google::protobuf::RpcController* controller,
     });
     if (!ret) {
         offer_failed(response, done, _heavy_work_pool);
+        return;
     }
 }
 
@@ -782,6 +796,7 @@ void 
PInternalServiceImpl::update_cache(google::protobuf::RpcController* control
     });
     if (!ret) {
         offer_failed(response, done, _light_work_pool);
+        return;
     }
 }
 
@@ -794,6 +809,7 @@ void 
PInternalServiceImpl::fetch_cache(google::protobuf::RpcController* controll
     });
     if (!ret) {
         offer_failed(result, done, _heavy_work_pool);
+        return;
     }
 }
 
@@ -806,6 +822,7 @@ void 
PInternalServiceImpl::clear_cache(google::protobuf::RpcController* controll
     });
     if (!ret) {
         offer_failed(response, done, _light_work_pool);
+        return;
     }
 }
 
@@ -825,6 +842,7 @@ void 
PInternalServiceImpl::merge_filter(::google::protobuf::RpcController* contr
     });
     if (!ret) {
         offer_failed(response, done, _light_work_pool);
+        return;
     }
 }
 
@@ -846,6 +864,7 @@ void 
PInternalServiceImpl::apply_filter(::google::protobuf::RpcController* contr
     });
     if (!ret) {
         offer_failed(response, done, _light_work_pool);
+        return;
     }
 }
 
@@ -867,6 +886,7 @@ void 
PInternalServiceImpl::apply_filterv2(::google::protobuf::RpcController* con
     });
     if (!ret) {
         offer_failed(response, done, _light_work_pool);
+        return;
     }
 }
 
@@ -900,6 +920,7 @@ void 
PInternalServiceImpl::send_data(google::protobuf::RpcController* controller
     });
     if (!ret) {
         offer_failed(response, done, _heavy_work_pool);
+        return;
     }
 }
 
@@ -923,6 +944,7 @@ void 
PInternalServiceImpl::commit(google::protobuf::RpcController* controller,
     });
     if (!ret) {
         offer_failed(response, done, _light_work_pool);
+        return;
     }
 }
 
@@ -945,6 +967,7 @@ void 
PInternalServiceImpl::rollback(google::protobuf::RpcController* controller,
     });
     if (!ret) {
         offer_failed(response, done, _light_work_pool);
+        return;
     }
 }
 
@@ -963,6 +986,7 @@ void 
PInternalServiceImpl::fold_constant_expr(google::protobuf::RpcController* c
     });
     if (!ret) {
         offer_failed(response, done, _light_work_pool);
+        return;
     }
 }
 
@@ -997,6 +1021,7 @@ void 
PInternalServiceImpl::transmit_block(google::protobuf::RpcController* contr
     });
     if (!ret) {
         offer_failed(response, done, pool);
+        return;
     }
 }
 
@@ -1015,6 +1040,7 @@ void 
PInternalServiceImpl::transmit_block_by_http(google::protobuf::RpcControlle
     });
     if (!ret) {
         offer_failed(response, done, _heavy_work_pool);
+        return;
     }
 }
 
@@ -1081,6 +1107,7 @@ void 
PInternalServiceImpl::check_rpc_channel(google::protobuf::RpcController* co
     });
     if (!ret) {
         offer_failed(response, done, _light_work_pool);
+        return;
     }
 }
 
@@ -1119,6 +1146,7 @@ void 
PInternalServiceImpl::reset_rpc_channel(google::protobuf::RpcController* co
     });
     if (!ret) {
         offer_failed(response, done, _light_work_pool);
+        return;
     }
 }
 
@@ -1135,6 +1163,7 @@ void 
PInternalServiceImpl::hand_shake(google::protobuf::RpcController* controlle
     });
     if (!ret) {
         offer_failed(response, done, _light_work_pool);
+        return;
     }
 }
 
@@ -1353,6 +1382,7 @@ void 
PInternalServiceImpl::request_slave_tablet_pull_rowset(
     });
     if (!ret) {
         offer_failed(response, done, _heavy_work_pool);
+        return;
     }
     Status::OK().to_protobuf(response->mutable_status());
 }
@@ -1424,6 +1454,7 @@ void 
PInternalServiceImpl::response_slave_tablet_pull_rowset(
     });
     if (!ret) {
         offer_failed(response, done, _heavy_work_pool);
+        return;
     }
 }
 
@@ -1597,6 +1628,7 @@ void 
PInternalServiceImpl::multiget_data(google::protobuf::RpcController* contro
     });
     if (!ret) {
         offer_failed(response, done, _heavy_work_pool);
+        return;
     }
 }
 
@@ -1627,6 +1659,7 @@ void 
PInternalServiceImpl::glob(google::protobuf::RpcController* controller,
     });
     if (!ret) {
         offer_failed(response, done, _heavy_work_pool);
+        return;
     }
 }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to