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

eldenmoon 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 8b49262054a [Config](Variant) make remote schema fetch rpc timeout 
configurable (#35296)
8b49262054a is described below

commit 8b49262054afe4030c684de4042262d769c0a0b0
Author: lihangyu <[email protected]>
AuthorDate: Tue May 28 11:38:17 2024 +0800

    [Config](Variant) make remote schema fetch rpc timeout configurable (#35296)
---
 be/src/common/config.cpp                                            | 2 ++
 be/src/common/config.h                                              | 2 ++
 be/src/service/internal_service.cpp                                 | 1 +
 .../org/apache/doris/common/util/FetchRemoteTabletSchemaUtil.java   | 4 +++-
 fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java   | 6 ++++++
 5 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/be/src/common/config.cpp b/be/src/common/config.cpp
index 6a4cd152a1b..610d5492aa7 100644
--- a/be/src/common/config.cpp
+++ b/be/src/common/config.cpp
@@ -1275,6 +1275,8 @@ DEFINE_Int64(max_nonblock_close_thread_num, "64");
 // The possibility that mem allocator throws an exception during memory 
allocation
 // This config is for test usage, be careful when changing it.
 DEFINE_mDouble(mem_alloc_fault_probability, "0.0");
+// The time out milliseconds for remote fetch schema RPC, default 60s
+DEFINE_mInt64(fetch_remote_schema_rpc_timeout_ms, "60000");
 
 // clang-format off
 #ifdef BE_TEST
diff --git a/be/src/common/config.h b/be/src/common/config.h
index a53c985de36..ffec61770fd 100644
--- a/be/src/common/config.h
+++ b/be/src/common/config.h
@@ -1352,6 +1352,8 @@ DECLARE_Int64(max_nonblock_close_thread_num);
 // The possibility that mem allocator throws an exception during memory 
allocation
 // This config is for test usage, be careful when changing it.
 DECLARE_mDouble(mem_alloc_fault_probability);
+// The time out milliseconds for remote fetch schema RPC
+DECLARE_mInt64(fetch_remote_schema_rpc_timeout_ms);
 
 #ifdef BE_TEST
 // test s3
diff --git a/be/src/service/internal_service.cpp 
b/be/src/service/internal_service.cpp
index 338b8b5fb9c..c8f48e79988 100644
--- a/be/src/service/internal_service.cpp
+++ b/be/src/service/internal_service.cpp
@@ -1065,6 +1065,7 @@ void 
PInternalServiceImpl::fetch_remote_tablet_schema(google::protobuf::RpcContr
                         
ExecEnv::GetInstance()->brpc_internal_client_cache()->get_client(
                                 host, brpc_port));
                 rpc_contexts[i].cid = rpc_contexts[i].cntl.call_id();
+                
rpc_contexts[i].cntl.set_timeout_ms(config::fetch_remote_schema_rpc_timeout_ms);
                 stub->fetch_remote_tablet_schema(&rpc_contexts[i].cntl, 
&remote_request,
                                                  &rpc_contexts[i].response, 
brpc::DoNothing());
             }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/common/util/FetchRemoteTabletSchemaUtil.java
 
b/fe/fe-core/src/main/java/org/apache/doris/common/util/FetchRemoteTabletSchemaUtil.java
index 808b4b2a552..db9700f7448 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/common/util/FetchRemoteTabletSchemaUtil.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/common/util/FetchRemoteTabletSchemaUtil.java
@@ -32,6 +32,7 @@ import 
org.apache.doris.proto.InternalService.PFetchRemoteSchemaResponse;
 import org.apache.doris.proto.InternalService.PTabletsLocation;
 import org.apache.doris.proto.OlapFile.ColumnPB;
 import org.apache.doris.proto.OlapFile.TabletSchemaPB;
+import org.apache.doris.qe.ConnectContext;
 import org.apache.doris.rpc.BackendServiceProxy;
 import org.apache.doris.rpc.RpcException;
 import org.apache.doris.system.Backend;
@@ -116,7 +117,8 @@ public class FetchRemoteTabletSchemaUtil {
                                             
.fetchRemoteTabletSchemaAsync(be.getBrpcAddress(), request);
                 PFetchRemoteSchemaResponse response = null;
                 try {
-                    response = future.get(60, TimeUnit.SECONDS);
+                    response = future.get(
+                        
ConnectContext.get().getSessionVariable().fetchRemoteSchemaTimeoutSeconds, 
TimeUnit.SECONDS);
                     TStatusCode code = 
TStatusCode.findByValue(response.getStatus().getStatusCode());
                     String errMsg;
                     if (code != TStatusCode.OK) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java 
b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
index a966d85ca4a..44cb076d3ed 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java
@@ -584,6 +584,8 @@ public class SessionVariable implements Serializable, 
Writable {
 
     public static final String LIMIT_ROWS_FOR_SINGLE_INSTANCE = 
"limit_rows_for_single_instance";
 
+    public static final String FETCH_REMOTE_SCHEMA_TIMEOUT_SECONDS = 
"fetch_remote_schema_timeout_seconds";
+
     // CLOUD_VARIABLES_BEGIN
     public static final String CLOUD_CLUSTER = "cloud_cluster";
     public static final String DISABLE_EMPTY_PARTITION_PRUNE = 
"disable_empty_partition_prune";
@@ -1823,6 +1825,10 @@ public class SessionVariable implements Serializable, 
Writable {
     @VariableMgr.VarAttr(name = MIN_REVOCABLE_MEM, fuzzy = true)
     public long minRevocableMem = 32 * 1024 * 1024;
 
+    // fetch remote schema rpc timeout
+    @VariableMgr.VarAttr(name = FETCH_REMOTE_SCHEMA_TIMEOUT_SECONDS, fuzzy = 
true)
+    public long fetchRemoteSchemaTimeoutSeconds = 120;
+
     @VariableMgr.VarAttr(
             name = ENABLE_JOIN_SPILL,
             description = {"控制是否启用join算子落盘。默认为 false。",


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

Reply via email to