This is an automated email from the ASF dual-hosted git repository.
adoroszlai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new 2a4de14eb8 HDDS-12772. Configure initial heartbeat and first election
time for quicker MiniOzoneCluster startup (#8235)
2a4de14eb8 is described below
commit 2a4de14eb88ea88192feb3518a8d7db86a4faf89
Author: XiChen <[email protected]>
AuthorDate: Mon Apr 7 23:04:14 2025 +0800
HDDS-12772. Configure initial heartbeat and first election time for quicker
MiniOzoneCluster startup (#8235)
---
.../org/apache/hadoop/hdds/HddsConfigKeys.java | 8 ++++++
.../org/apache/hadoop/hdds/ratis/RatisHelper.java | 14 ++++++++++
.../org/apache/hadoop/hdds/scm/ScmConfigKeys.java | 4 +++
.../org/apache/hadoop/ozone/OzoneConfigKeys.java | 2 ++
.../common/src/main/resources/ozone-default.xml | 31 ++++++++++++++++++++++
.../common/statemachine/StateContext.java | 8 ++++--
.../transport/server/ratis/XceiverServerRatis.java | 3 +++
.../apache/hadoop/hdds/utils/HddsServerUtil.java | 29 ++++++++++++++++++++
.../org/apache/hadoop/hdds/scm/ha/RatisUtil.java | 2 ++
.../hadoop/hdds/upgrade/TestScmHAFinalization.java | 1 +
.../TestDatanodeHddsVolumeFailureDetection.java | 2 +-
.../ozone/recon/TestReconAndAdminContainerCLI.java | 2 +-
.../apache/hadoop/ozone/MiniOzoneClusterImpl.java | 1 +
.../hadoop/ozone/UniformDatanodesFactory.java | 7 ++++-
14 files changed, 109 insertions(+), 5 deletions(-)
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HddsConfigKeys.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HddsConfigKeys.java
index 370c480315..c76cafda55 100644
---
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HddsConfigKeys.java
+++
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HddsConfigKeys.java
@@ -27,10 +27,18 @@ public final class HddsConfigKeys {
"hdds.heartbeat.interval";
public static final String HDDS_HEARTBEAT_INTERVAL_DEFAULT =
"30s";
+ public static final String HDDS_INITIAL_HEARTBEAT_INTERVAL =
+ "hdds.initial.heartbeat.interval";
+ public static final String HDDS_INITIAL_HEARTBEAT_INTERVAL_DEFAULT =
+ "2s";
public static final String HDDS_RECON_HEARTBEAT_INTERVAL =
"hdds.recon.heartbeat.interval";
public static final String HDDS_RECON_HEARTBEAT_INTERVAL_DEFAULT =
"60s";
+ public static final String HDDS_RECON_INITIAL_HEARTBEAT_INTERVAL =
+ "hdds.recon.initial.heartbeat.interval";
+ public static final String HDDS_RECON_INITIAL_HEARTBEAT_INTERVAL_DEFAULT =
+ "2s";
public static final String HDDS_NODE_REPORT_INTERVAL =
"hdds.node.report.interval";
public static final String HDDS_NODE_REPORT_INTERVAL_DEFAULT =
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/ratis/RatisHelper.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/ratis/RatisHelper.java
index bcff6e6071..4d89d4fd2c 100644
---
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/ratis/RatisHelper.java
+++
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/ratis/RatisHelper.java
@@ -30,6 +30,7 @@
import java.util.List;
import java.util.Map;
import java.util.UUID;
+import java.util.concurrent.TimeUnit;
import java.util.function.BiFunction;
import java.util.function.BooleanSupplier;
import java.util.stream.Collectors;
@@ -66,6 +67,7 @@
import org.apache.ratis.retry.RetryPolicy;
import org.apache.ratis.rpc.RpcType;
import org.apache.ratis.rpc.SupportedRpcType;
+import org.apache.ratis.server.RaftServerConfigKeys;
import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
import org.apache.ratis.thirdparty.io.netty.buffer.ByteBuf;
import org.apache.ratis.util.JavaUtils;
@@ -645,4 +647,16 @@ public static int calculateAttempts(Duration pollInterval,
Duration maxDuration)
return (int) (max / interval);
}
+
+ public static void setFirstElectionTimeoutDuration(
+ ConfigurationSource conf, RaftProperties properties, String configKey) {
+ long firstElectionTimeout = conf.getTimeDuration(configKey, -1,
TimeUnit.MILLISECONDS);
+ if (firstElectionTimeout > 0) {
+ RaftServerConfigKeys.Rpc.setFirstElectionTimeoutMin(
+ properties, TimeDuration.valueOf(firstElectionTimeout,
TimeUnit.MILLISECONDS));
+ RaftServerConfigKeys.Rpc.setFirstElectionTimeoutMax(
+ properties, TimeDuration.valueOf(firstElectionTimeout + 200,
TimeUnit.MILLISECONDS));
+ }
+ }
+
}
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/ScmConfigKeys.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/ScmConfigKeys.java
index c2f79a7865..34848a9d5f 100644
---
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/ScmConfigKeys.java
+++
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/ScmConfigKeys.java
@@ -635,6 +635,10 @@ public final class ScmConfigKeys {
public static final String
HDDS_CONTAINER_RATIS_STATEMACHINE_WRITE_WAIT_INTERVAL
= "hdds.container.ratis.statemachine.write.wait.interval";
public static final long
HDDS_CONTAINER_RATIS_STATEMACHINE_WRITE_WAIT_INTERVAL_NS_DEFAULT = 10 * 60 *
1000_000_000L;
+
+ public static final String
OZONE_SCM_HA_RATIS_SERVER_RPC_FIRST_ELECTION_TIMEOUT
+ = "ozone.scm.ha.raft.server.rpc.first-election.timeout";
+
/**
* Never constructed.
*/
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConfigKeys.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConfigKeys.java
index 5dc4e15fc0..4db78e644e 100644
---
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConfigKeys.java
+++
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConfigKeys.java
@@ -415,6 +415,8 @@ public final class OzoneConfigKeys {
ScmConfigKeys.HDDS_RATIS_SNAPSHOT_THRESHOLD_KEY;
public static final long HDDS_RATIS_SNAPSHOT_THRESHOLD_DEFAULT =
ScmConfigKeys.HDDS_RATIS_SNAPSHOT_THRESHOLD_DEFAULT;
+ public static final String
HDDS_RATIS_LEADER_FIRST_ELECTION_MINIMUM_TIMEOUT_DURATION_KEY =
+ "hdds.ratis.leader.first.election.minimum.timeout.duration";
public static final String HDDS_DATANODE_PLUGINS_KEY =
"hdds.datanode.plugins";
diff --git a/hadoop-hdds/common/src/main/resources/ozone-default.xml
b/hadoop-hdds/common/src/main/resources/ozone-default.xml
index e2a7b29355..7e76cf68c7 100644
--- a/hadoop-hdds/common/src/main/resources/ozone-default.xml
+++ b/hadoop-hdds/common/src/main/resources/ozone-default.xml
@@ -347,6 +347,14 @@
Default is 5s.
</description>
</property>
+ <property>
+ <name>hdds.ratis.leader.first.election.minimum.timeout.duration</name>
+ <value/>
+ <tag>OZONE, RATIS, MANAGEMENT</tag>
+ <description>ratis Minimum timeout for the first election of a leader.
+ If not configured, fallback to
hdds.ratis.leader.election.minimum.timeout.duration.
+ </description>
+ </property>
<property>
<name>hdds.node.report.interval</name>
<value>60000ms</value>
@@ -1154,6 +1162,14 @@
if the default value for this config is not used.
</description>
</property>
+ <property>
+ <name>hdds.initial.heartbeat.interval</name>
+ <value>2s</value>
+ <tag>OZONE, MANAGEMENT</tag>
+ <description>
+ Heartbeat interval used during Datanode initialization for SCM.
+ </description>
+ </property>
<property>
<name>hdds.recon.heartbeat.interval</name>
<value>60s</value>
@@ -1162,6 +1178,14 @@
The heartbeat interval from a Datanode to Recon.
</description>
</property>
+ <property>
+ <name>hdds.recon.initial.heartbeat.interval</name>
+ <value>60s</value>
+ <tag>OZONE, MANAGEMENT, RECON</tag>
+ <description>
+ Heartbeat interval used during Datanode initialization for Recon.
+ </description>
+ </property>
<property>
<name>ozone.scm.heartbeat.log.warn.interval.count</name>
<value>10</value>
@@ -3834,6 +3858,13 @@
election. Default is 1s.</description>
</property>
<property>
+ <name>ozone.scm.ha.raft.server.rpc.first-election.timeout</name>
+ <value/>
+ <tag>SCM, OZONE, HA, RATIS</tag>
+ <description>ratis timeout for the first election of a leader.
+ If not configured, fallback to
ozone.scm.ha.ratis.leader.election.timeout.
+ </description>
+ </property><property>
<name>ozone.scm.ha.ratis.server.leaderelection.pre-vote</name>
<value>true</value>
<tag>SCM, OZONE, HA, RATIS</tag>
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/StateContext.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/StateContext.java
index 91cfaa5a21..4060902dd2 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/StateContext.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/StateContext.java
@@ -18,9 +18,11 @@
package org.apache.hadoop.ozone.container.common.statemachine;
import static java.lang.Math.min;
+import static
org.apache.hadoop.hdds.utils.HddsServerUtil.getInitialReconHeartbeatInterval;
import static org.apache.hadoop.hdds.utils.HddsServerUtil.getLogWarnInterval;
import static
org.apache.hadoop.hdds.utils.HddsServerUtil.getReconHeartbeatInterval;
import static
org.apache.hadoop.hdds.utils.HddsServerUtil.getScmHeartbeatInterval;
+import static
org.apache.hadoop.hdds.utils.HddsServerUtil.getScmInitialHeartbeatInterval;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
@@ -149,9 +151,9 @@ public class StateContext {
* real HB frequency after scm registration. With this method the
* initial registration could be significant faster.
*/
- private final AtomicLong heartbeatFrequency = new AtomicLong(2000);
+ private final AtomicLong heartbeatFrequency;
- private final AtomicLong reconHeartbeatFrequency = new AtomicLong(2000);
+ private final AtomicLong reconHeartbeatFrequency;
private final int maxCommandQueueLimit;
@@ -192,6 +194,8 @@ public StateContext(ConfigurationSource conf,
fullReportTypeList = new ArrayList<>();
type2Reports = new HashMap<>();
this.threadNamePrefix = threadNamePrefix;
+ heartbeatFrequency = new AtomicLong(getScmInitialHeartbeatInterval(conf));
+ reconHeartbeatFrequency = new
AtomicLong(getInitialReconHeartbeatInterval(conf));
initReportTypeCollection();
}
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/XceiverServerRatis.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/XceiverServerRatis.java
index ced987c814..0170a802c9 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/XceiverServerRatis.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/transport/server/ratis/XceiverServerRatis.java
@@ -24,6 +24,7 @@
import static
org.apache.hadoop.ozone.OzoneConfigKeys.HDDS_CONTAINER_RATIS_LOG_APPENDER_QUEUE_NUM_ELEMENTS_DEFAULT;
import static
org.apache.hadoop.ozone.OzoneConfigKeys.HDDS_CONTAINER_RATIS_SEGMENT_SIZE_DEFAULT;
import static
org.apache.hadoop.ozone.OzoneConfigKeys.HDDS_CONTAINER_RATIS_SEGMENT_SIZE_KEY;
+import static
org.apache.hadoop.ozone.OzoneConfigKeys.HDDS_RATIS_LEADER_FIRST_ELECTION_MINIMUM_TIMEOUT_DURATION_KEY;
import static org.apache.ratis.util.Preconditions.assertTrue;
import com.google.common.annotations.VisibleForTesting;
@@ -387,6 +388,8 @@ private void setRatisLeaderElectionTimeout(RaftProperties
properties) {
leaderElectionMinTimeout.toLong(TimeUnit.MILLISECONDS) + 200;
RaftServerConfigKeys.Rpc.setTimeoutMax(properties,
TimeDuration.valueOf(leaderElectionMaxTimeout, TimeUnit.MILLISECONDS));
+ RatisHelper.setFirstElectionTimeoutDuration(
+ conf, properties,
HDDS_RATIS_LEADER_FIRST_ELECTION_MINIMUM_TIMEOUT_DURATION_KEY);
}
private void setTimeoutForRetryCache(RaftProperties properties) {
diff --git
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/HddsServerUtil.java
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/HddsServerUtil.java
index eeb65cb48e..a48a7a33a7 100644
---
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/HddsServerUtil.java
+++
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/HddsServerUtil.java
@@ -19,8 +19,12 @@
import static org.apache.hadoop.hdds.HddsConfigKeys.HDDS_HEARTBEAT_INTERVAL;
import static
org.apache.hadoop.hdds.HddsConfigKeys.HDDS_HEARTBEAT_INTERVAL_DEFAULT;
+import static
org.apache.hadoop.hdds.HddsConfigKeys.HDDS_INITIAL_HEARTBEAT_INTERVAL;
+import static
org.apache.hadoop.hdds.HddsConfigKeys.HDDS_INITIAL_HEARTBEAT_INTERVAL_DEFAULT;
import static
org.apache.hadoop.hdds.HddsConfigKeys.HDDS_RECON_HEARTBEAT_INTERVAL;
import static
org.apache.hadoop.hdds.HddsConfigKeys.HDDS_RECON_HEARTBEAT_INTERVAL_DEFAULT;
+import static
org.apache.hadoop.hdds.HddsConfigKeys.HDDS_RECON_INITIAL_HEARTBEAT_INTERVAL;
+import static
org.apache.hadoop.hdds.HddsConfigKeys.HDDS_RECON_INITIAL_HEARTBEAT_INTERVAL_DEFAULT;
import static org.apache.hadoop.hdds.HddsUtils.getHostNameFromConfigKeys;
import static org.apache.hadoop.hdds.HddsUtils.getPortNumberFromConfigKeys;
import static org.apache.hadoop.hdds.scm.ScmConfigKeys.HDDS_DATANODE_DIR_KEY;
@@ -266,6 +270,19 @@ public static long
getScmHeartbeatInterval(ConfigurationSource conf) {
HDDS_HEARTBEAT_INTERVAL_DEFAULT, TimeUnit.MILLISECONDS);
}
+
+ /**
+ * Heartbeat Interval - Defines the initial heartbeat frequency from a
datanode to
+ * SCM.
+ *
+ * @param conf - Ozone Config
+ * @return - HB interval in milli seconds.
+ */
+ public static long getScmInitialHeartbeatInterval(ConfigurationSource conf) {
+ return conf.getTimeDuration(HDDS_INITIAL_HEARTBEAT_INTERVAL,
+ HDDS_INITIAL_HEARTBEAT_INTERVAL_DEFAULT, TimeUnit.MILLISECONDS);
+ }
+
/**
* Heartbeat Interval - Defines the heartbeat frequency from a datanode to
* Recon.
@@ -278,6 +295,18 @@ public static long
getReconHeartbeatInterval(ConfigurationSource conf) {
HDDS_RECON_HEARTBEAT_INTERVAL_DEFAULT, TimeUnit.MILLISECONDS);
}
+ /**
+ * Heartbeat Interval - Defines the initial heartbeat frequency from a
datanode to
+ * Recon.
+ *
+ * @param conf - Ozone Config
+ * @return - HB interval in milli seconds.
+ */
+ public static long getInitialReconHeartbeatInterval(ConfigurationSource
conf) {
+ return conf.getTimeDuration(HDDS_RECON_INITIAL_HEARTBEAT_INTERVAL,
+ HDDS_RECON_INITIAL_HEARTBEAT_INTERVAL_DEFAULT, TimeUnit.MILLISECONDS);
+ }
+
/**
* Get the Stale Node interval, which is used by SCM to flag a datanode as
* stale, if the heartbeat from that node has been missing for this duration.
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/RatisUtil.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/RatisUtil.java
index 0d65fff1d2..456d020f9f 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/RatisUtil.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/RatisUtil.java
@@ -138,6 +138,8 @@ private static void setRaftRpcProperties(final
RaftProperties properties,
OZONE_SCM_HA_RATIS_NODE_FAILURE_TIMEOUT_DEFAULT,
TimeUnit.MILLISECONDS),
TimeUnit.MILLISECONDS));
+ RatisHelper.setFirstElectionTimeoutDuration(
+ ozoneConf, properties,
ScmConfigKeys.OZONE_SCM_HA_RATIS_SERVER_RPC_FIRST_ELECTION_TIMEOUT);
}
/**
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/upgrade/TestScmHAFinalization.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/upgrade/TestScmHAFinalization.java
index a373075e11..1d24c559c5 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/upgrade/TestScmHAFinalization.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/upgrade/TestScmHAFinalization.java
@@ -88,6 +88,7 @@ public void init(OzoneConfiguration conf,
configurator.setUpgradeFinalizationExecutor(executor);
conf.setInt(HDDS_SCM_INIT_DEFAULT_LAYOUT_VERSION,
HDDSLayoutFeature.INITIAL_VERSION.layoutVersion());
+
conf.set(ScmConfigKeys.OZONE_SCM_HA_RATIS_SERVER_RPC_FIRST_ELECTION_TIMEOUT,
"5s");
MiniOzoneHAClusterImpl.Builder clusterBuilder =
MiniOzoneCluster.newHABuilder(conf);
clusterBuilder.setNumOfStorageContainerManagers(NUM_SCMS)
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/dn/volume/TestDatanodeHddsVolumeFailureDetection.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/dn/volume/TestDatanodeHddsVolumeFailureDetection.java
index d653facf6e..fdea9054ce 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/dn/volume/TestDatanodeHddsVolumeFailureDetection.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/dn/volume/TestDatanodeHddsVolumeFailureDetection.java
@@ -266,7 +266,7 @@ private static MiniOzoneCluster newCluster(boolean schemaV3)
DatanodeConfiguration dnConf =
ozoneConfig.getObject(DatanodeConfiguration.class);
dnConf.setFailedDataVolumesTolerated(1);
- dnConf.setDiskCheckMinGap(Duration.ofSeconds(5));
+ dnConf.setDiskCheckMinGap(Duration.ofSeconds(2));
ozoneConfig.setFromObject(dnConf);
MiniOzoneCluster cluster = MiniOzoneCluster.newBuilder(ozoneConfig)
.setNumDatanodes(1)
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/recon/TestReconAndAdminContainerCLI.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/recon/TestReconAndAdminContainerCLI.java
index e78aa090df..2ce2a18691 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/recon/TestReconAndAdminContainerCLI.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/recon/TestReconAndAdminContainerCLI.java
@@ -149,7 +149,7 @@ static void init() throws Exception {
reconContainerManager = reconScm.getContainerManager();
LambdaTestUtils.await(60000, 5000,
- () -> (reconPipelineManager.getPipelines().size() >= 4));
+ () -> (reconPipelineManager.getPipelines().size() >=
scmPipelineManager.getPipelines().size()));
// Verify that Recon has all the pipelines from SCM.
scmPipelineManager.getPipelines().forEach(p -> {
diff --git
a/hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/MiniOzoneClusterImpl.java
b/hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/MiniOzoneClusterImpl.java
index 4a154ef276..cef2724de2 100644
---
a/hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/MiniOzoneClusterImpl.java
+++
b/hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/MiniOzoneClusterImpl.java
@@ -774,6 +774,7 @@ protected void configureSCM() {
"3s");
conf.setInt(ScmConfigKeys.OZONE_SCM_RATIS_PORT_KEY, getFreePort());
conf.setInt(ScmConfigKeys.OZONE_SCM_GRPC_PORT_KEY, getFreePort());
+
conf.setIfUnset(ScmConfigKeys.OZONE_SCM_HA_RATIS_SERVER_RPC_FIRST_ELECTION_TIMEOUT,
"1s");
}
private void configureOM() {
diff --git
a/hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/UniformDatanodesFactory.java
b/hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/UniformDatanodesFactory.java
index 328e8a9692..fed26e6413 100644
---
a/hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/UniformDatanodesFactory.java
+++
b/hadoop-ozone/mini-cluster/src/main/java/org/apache/hadoop/ozone/UniformDatanodesFactory.java
@@ -19,6 +19,8 @@
import static
org.apache.hadoop.hdds.HddsConfigKeys.HDDS_DATANODE_CLIENT_ADDRESS_KEY;
import static
org.apache.hadoop.hdds.HddsConfigKeys.HDDS_DATANODE_HTTP_ADDRESS_KEY;
+import static
org.apache.hadoop.hdds.HddsConfigKeys.HDDS_INITIAL_HEARTBEAT_INTERVAL;
+import static
org.apache.hadoop.hdds.HddsConfigKeys.HDDS_RECON_INITIAL_HEARTBEAT_INTERVAL;
import static org.apache.hadoop.hdds.HddsConfigKeys.OZONE_METADATA_DIRS;
import static
org.apache.hadoop.hdds.scm.ScmConfigKeys.HDDS_DATANODE_DIR_DU_RESERVED;
import static org.apache.hadoop.hdds.scm.ScmConfigKeys.HDDS_DATANODE_DIR_KEY;
@@ -31,6 +33,7 @@
import static
org.apache.hadoop.ozone.OzoneConfigKeys.HDDS_CONTAINER_RATIS_DATASTREAM_PORT;
import static
org.apache.hadoop.ozone.OzoneConfigKeys.HDDS_CONTAINER_RATIS_IPC_PORT;
import static
org.apache.hadoop.ozone.OzoneConfigKeys.HDDS_CONTAINER_RATIS_SERVER_PORT;
+import static
org.apache.hadoop.ozone.OzoneConfigKeys.HDDS_RATIS_LEADER_FIRST_ELECTION_MINIMUM_TIMEOUT_DURATION_KEY;
import static
org.apache.ozone.test.GenericTestUtils.PortAllocator.anyHostWithFreePort;
import static org.apache.ozone.test.GenericTestUtils.PortAllocator.getFreePort;
@@ -114,7 +117,9 @@ public OzoneConfiguration apply(OzoneConfiguration conf)
throws IOException {
if (currentVersion != null) {
dnConf.setInt(TESTING_DATANODE_VERSION_CURRENT,
currentVersion.toProtoValue());
}
-
+ dnConf.set(HDDS_RATIS_LEADER_FIRST_ELECTION_MINIMUM_TIMEOUT_DURATION_KEY,
"1s");
+ dnConf.set(HDDS_INITIAL_HEARTBEAT_INTERVAL, "500ms");
+ dnConf.set(HDDS_RECON_INITIAL_HEARTBEAT_INTERVAL, "500ms");
return dnConf;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]