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

morningman 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 f84cfcfb9bc [opt](config) support dynamically  change hms timeout 
(#59051)
f84cfcfb9bc is described below

commit f84cfcfb9bc8d6647b44c6d36abe832ae3e59317
Author: camby <[email protected]>
AuthorDate: Mon Dec 22 14:20:58 2025 +0800

    [opt](config) support dynamically  change hms timeout (#59051)
    
    ### What problem does this PR solve?
    
    Now we use FE config `hive_metastore_client_timeout_second` to force
    reset
    `hive.metastore.client.socket.timeout`, but there are some problem:
    1. config `hive_metastore_client_timeout_second` is global, can not set
    for each catalog;
    2. config `hive_metastore_client_timeout_second` is Mutable, but it will
    not take effect because of `ThriftHMSCachedClient`;
    
    How to improve:
    keep config `hive_metastore_client_timeout_second` as the default
    timeout, while user do not override
    `hive.metastore.client.socket.timeout`, and make the config immutable.
---
 .../src/main/java/org/apache/doris/common/Config.java     |  2 +-
 .../doris/datasource/hive/ThriftHMSCachedClient.java      |  5 -----
 .../datasource/property/metastore/HMSBaseProperties.java  |  8 ++++++--
 .../datasource/property/metastore/HMSPropertiesTest.java  | 15 +++++++++++++++
 4 files changed, 22 insertions(+), 8 deletions(-)

diff --git a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java 
b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java
index 5faca24e2f0..2329b703fd9 100644
--- a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java
+++ b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java
@@ -2246,7 +2246,7 @@ public class Config extends ConfigBase {
      * The default connection timeout for hive metastore.
      * hive.metastore.client.socket.timeout
      */
-    @ConfField(mutable = true, masterOnly = false)
+    @ConfField(mutable = false, masterOnly = false)
     public static long hive_metastore_client_timeout_second = 10;
 
     /**
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/ThriftHMSCachedClient.java
 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/ThriftHMSCachedClient.java
index 1b763969afa..840ad765587 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/ThriftHMSCachedClient.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/ThriftHMSCachedClient.java
@@ -37,7 +37,6 @@ import org.apache.hadoop.hive.common.ValidTxnList;
 import org.apache.hadoop.hive.common.ValidTxnWriteIdList;
 import org.apache.hadoop.hive.common.ValidWriteIdList;
 import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
 import org.apache.hadoop.hive.metastore.HiveMetaHookLoader;
 import org.apache.hadoop.hive.metastore.HiveMetaStoreClient;
 import org.apache.hadoop.hive.metastore.IMetaStoreClient;
@@ -98,10 +97,6 @@ public class ThriftHMSCachedClient implements 
HMSCachedClient {
 
     public ThriftHMSCachedClient(HiveConf hiveConf, int poolSize, 
ExecutionAuthenticator executionAuthenticator) {
         Preconditions.checkArgument(poolSize > 0, poolSize);
-        if (hiveConf != null) {
-            HiveConf.setVar(hiveConf, ConfVars.METASTORE_CLIENT_SOCKET_TIMEOUT,
-                    
String.valueOf(Config.hive_metastore_client_timeout_second));
-        }
         this.hiveConf = hiveConf;
         this.poolSize = poolSize;
         this.isClosed = false;
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/property/metastore/HMSBaseProperties.java
 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/property/metastore/HMSBaseProperties.java
index 9121d2148e6..9056aae6ee7 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/property/metastore/HMSBaseProperties.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/property/metastore/HMSBaseProperties.java
@@ -30,6 +30,7 @@ import com.google.common.base.Strings;
 import lombok.Getter;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.hadoop.hive.conf.HiveConf;
+import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -198,8 +199,11 @@ public class HMSBaseProperties {
         if (StringUtils.isNotBlank(hmsUserName)) {
             hiveConf.set(AuthenticationConfig.HADOOP_USER_NAME, hmsUserName);
         }
-        HiveConf.setVar(hiveConf, 
HiveConf.ConfVars.METASTORE_CLIENT_SOCKET_TIMEOUT,
-                String.valueOf(Config.hive_metastore_client_timeout_second));
+        if 
(!userOverriddenHiveConfig.containsKey(ConfVars.METASTORE_CLIENT_SOCKET_TIMEOUT.toString()))
 {
+            // use Config.hive_metastore_client_timeout_second as default 
timeout
+            HiveConf.setVar(hiveConf, 
HiveConf.ConfVars.METASTORE_CLIENT_SOCKET_TIMEOUT,
+                    
String.valueOf(Config.hive_metastore_client_timeout_second));
+        }
         initHadoopAuthenticator();
     }
 
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/datasource/property/metastore/HMSPropertiesTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/datasource/property/metastore/HMSPropertiesTest.java
index 88ca5fa7c95..6d240f65729 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/datasource/property/metastore/HMSPropertiesTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/datasource/property/metastore/HMSPropertiesTest.java
@@ -134,4 +134,19 @@ public class HMSPropertiesTest {
         HiveHMSProperties hmsProperties = getHMSProperties(params);
         Assertions.assertNotNull(hmsProperties);
     }
+
+    @Test
+    public void testHmsTimeoutParams() throws UserException {
+        Map<String, String> params = createBaseParams();
+        // case1: normal case, use Config.hive_metastore_client_timeout_second 
as default
+        HiveHMSProperties hmsProperties = getHMSProperties(params);
+        HiveConf hiveConf = hmsProperties.getHiveConf();
+        
Assertions.assertEquals(String.valueOf(Config.hive_metastore_client_timeout_second),
+                hiveConf.get("hive.metastore.client.socket.timeout", null));
+
+        params.put("hive.metastore.client.socket.timeout", "123");
+        hmsProperties = getHMSProperties(params);
+        hiveConf = hmsProperties.getHiveConf();
+        Assertions.assertEquals("123", 
hiveConf.get("hive.metastore.client.socket.timeout", null));
+    }
 }


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

Reply via email to