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

tanxinyu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new 0c7fef076d8 [IOTDB-6285] Alter Procedure timeout (#11817)
0c7fef076d8 is described below

commit 0c7fef076d824197b47920778c8820ae98be723b
Author: Yongzao <[email protected]>
AuthorDate: Tue Jan 2 14:55:31 2024 +0800

    [IOTDB-6285] Alter Procedure timeout (#11817)
---
 .../iotdb/confignode/manager/ProcedureManager.java       | 16 +++++++++++-----
 .../iotdb/confignode/manager/load/cache/LoadCache.java   |  8 ++++----
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ProcedureManager.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ProcedureManager.java
index d616b109660..0398657f55f 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ProcedureManager.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ProcedureManager.java
@@ -25,6 +25,8 @@ import 
org.apache.iotdb.common.rpc.thrift.TDataNodeConfiguration;
 import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
 import org.apache.iotdb.common.rpc.thrift.TSStatus;
 import org.apache.iotdb.commons.cluster.NodeStatus;
+import org.apache.iotdb.commons.conf.CommonConfig;
+import org.apache.iotdb.commons.conf.CommonDescriptor;
 import org.apache.iotdb.commons.conf.IoTDBConstant;
 import org.apache.iotdb.commons.exception.IoTDBException;
 import org.apache.iotdb.commons.path.PartialPath;
@@ -108,7 +110,6 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
 import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 public class ProcedureManager {
@@ -116,8 +117,15 @@ public class ProcedureManager {
 
   private static final ConfigNodeConfig CONFIG_NODE_CONFIG =
       ConfigNodeDescriptor.getInstance().getConf();
+  private static final CommonConfig COMMON_CONFIG = 
CommonDescriptor.getInstance().getConfig();
 
-  private static final int PROCEDURE_WAIT_TIME_OUT = 30;
+  public static final long PROCEDURE_WAIT_TIME_OUT =
+      Math.min(
+          2
+              * Math.max(
+                  
CONFIG_NODE_CONFIG.getSchemaRegionRatisRpcLeaderElectionTimeoutMaxMs(),
+                  
CONFIG_NODE_CONFIG.getDataRegionRatisRpcLeaderElectionTimeoutMaxMs()),
+          COMMON_CONFIG.getConnectionTimeoutInMS());
   private static final int PROCEDURE_WAIT_RETRY_TIMEOUT = 250;
 
   private final ConfigManager configManager;
@@ -909,9 +917,7 @@ public class ProcedureManager {
       long startTimeForCurrentProcedure = System.currentTimeMillis();
       while (executor.isRunning()
           && !executor.isFinished(procedureId)
-          && TimeUnit.MILLISECONDS.toSeconds(
-                  System.currentTimeMillis() - startTimeForCurrentProcedure)
-              < PROCEDURE_WAIT_TIME_OUT) {
+          && System.currentTimeMillis() - startTimeForCurrentProcedure < 
PROCEDURE_WAIT_TIME_OUT) {
         sleepWithoutInterrupt(PROCEDURE_WAIT_RETRY_TIMEOUT);
       }
       Procedure<ConfigNodeProcedureEnv> finishedProcedure =
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/cache/LoadCache.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/cache/LoadCache.java
index c0f9312b77e..8695ae9071e 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/cache/LoadCache.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/cache/LoadCache.java
@@ -27,10 +27,10 @@ import org.apache.iotdb.common.rpc.thrift.TRegionReplicaSet;
 import org.apache.iotdb.commons.cluster.NodeStatus;
 import org.apache.iotdb.commons.cluster.NodeType;
 import org.apache.iotdb.commons.cluster.RegionStatus;
-import org.apache.iotdb.commons.conf.CommonDescriptor;
 import org.apache.iotdb.confignode.conf.ConfigNodeConfig;
 import org.apache.iotdb.confignode.conf.ConfigNodeDescriptor;
 import org.apache.iotdb.confignode.manager.IManager;
+import org.apache.iotdb.confignode.manager.ProcedureManager;
 import org.apache.iotdb.confignode.manager.load.cache.node.BaseNodeCache;
 import 
org.apache.iotdb.confignode.manager.load.cache.node.ConfigNodeHeartbeatCache;
 import 
org.apache.iotdb.confignode.manager.load.cache.node.DataNodeHeartbeatCache;
@@ -67,9 +67,9 @@ public class LoadCache {
   private static final ConfigNodeConfig CONF = 
ConfigNodeDescriptor.getInstance().getConf();
   private static final long HEARTBEAT_INTERVAL = 
CONF.getHeartbeatIntervalInMs();
   private static final long LEADER_ELECTION_WAITING_TIMEOUT =
-      Math.min(
-          2 * CONF.getSchemaRegionRatisRpcLeaderElectionTimeoutMaxMs(),
-          
CommonDescriptor.getInstance().getConfig().getConnectionTimeoutInMS());
+      Math.max(
+          ProcedureManager.PROCEDURE_WAIT_TIME_OUT - 
TimeUnit.SECONDS.toMillis(2),
+          TimeUnit.SECONDS.toMillis(10));
 
   // Map<NodeId, INodeCache>
   private final Map<Integer, BaseNodeCache> nodeCacheMap;

Reply via email to