diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/recovery/ZKRMStateStore.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/recovery/ZKRMStateStore.java index 15ac971..e4ab528 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/recovery/ZKRMStateStore.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/recovery/ZKRMStateStore.java @@ -104,6 +104,8 @@ private String zkHostPort = null; private int zkSessionTimeout; + // wait time for zkClient to re-establish connection with zk-server. + private long zkResyncWaitTime; @VisibleForTesting long zkRetryInterval; @@ -234,6 +236,7 @@ public synchronized void initInternal(Configuration conf) throws Exception { conf.getLong(YarnConfiguration.RM_ZK_RETRY_INTERVAL_MS, YarnConfiguration.DEFAULT_RM_ZK_RETRY_INTERVAL_MS); } + zkResyncWaitTime = zkRetryInterval * numRetries; zkAcl = RMZKUtils.getZKAcls(conf); zkAuths = RMZKUtils.getZKAuths(conf); @@ -1090,11 +1093,11 @@ T runWithCheck() throws Exception { long startTime = System.currentTimeMillis(); synchronized (ZKRMStateStore.this) { while (zkClient == null) { - ZKRMStateStore.this.wait(zkSessionTimeout); + ZKRMStateStore.this.wait(zkResyncWaitTime); if (zkClient != null) { break; } - if (System.currentTimeMillis() - startTime > zkSessionTimeout) { + if (System.currentTimeMillis() - startTime > zkResyncWaitTime) { throw new IOException("Wait for ZKClient creation timed out"); } }