This is an automated email from the ASF dual-hosted git repository.
shashikant 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 093f972 HDDS-5787. Provide capability in Ozone to enable ratis
pre-vote (#2680)
093f972 is described below
commit 093f972886bffa2b6a971045d99b0f024ebd86fe
Author: Sammi Chen <[email protected]>
AuthorDate: Fri Oct 1 19:57:38 2021 +0800
HDDS-5787. Provide capability in Ozone to enable ratis pre-vote (#2680)
---
.../java/org/apache/hadoop/hdds/scm/ScmConfigKeys.java | 4 ++++
hadoop-hdds/common/src/main/resources/ozone-default.xml | 14 ++++++++++++++
.../transport/server/ratis/XceiverServerRatis.java | 3 ++-
.../hadoop/hdds/conf/DatanodeRatisServerConfig.java | 16 ++++++++++++++++
.../java/org/apache/hadoop/hdds/scm/ha/RatisUtil.java | 11 +++++++----
.../java/org/apache/hadoop/ozone/om/OMConfigKeys.java | 6 ++++++
.../hadoop/ozone/om/ratis/OzoneManagerRatisServer.java | 6 ++++--
7 files changed, 53 insertions(+), 7 deletions(-)
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 57b80cb..0d904e2 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
@@ -549,6 +549,10 @@ public final class ScmConfigKeys {
public static final long
OZONE_SCM_HA_RATIS_REQUEST_TIMEOUT_DEFAULT = 30 * 1000L;
+ public static final String OZONE_SCM_HA_RATIS_SERVER_ELECTION_PRE_VOTE =
+ "ozone.scm.ha.ratis.server.leaderelection.pre-vote";
+ public static final boolean
+ OZONE_SCM_HA_RATIS_SERVER_ELECTION_PRE_VOTE_DEFAULT = false;
/**
* Never constructed.
diff --git a/hadoop-hdds/common/src/main/resources/ozone-default.xml
b/hadoop-hdds/common/src/main/resources/ozone-default.xml
index 0755b94..ce04904 100644
--- a/hadoop-hdds/common/src/main/resources/ozone-default.xml
+++ b/hadoop-hdds/common/src/main/resources/ozone-default.xml
@@ -1745,6 +1745,14 @@
</property>
<property>
+ <name>ozone.om.ratis.server.leaderelection.pre-vote </name>
+ <value>false</value>
+ <tag>OZONE, OM, RATIS, MANAGEMENT</tag>
+ <description>Enable/disable OM HA leader election pre-vote phase.
+ </description>
+ </property>
+
+ <property>
<name>ozone.om.ratis.server.failure.timeout.duration</name>
<value>120s</value>
<tag>OZONE, OM, RATIS, MANAGEMENT</tag>
@@ -2903,6 +2911,12 @@
election. Default is 1s.</description>
</property>
<property>
+ <name>ozone.scm.ha.ratis.server.leaderelection.pre-vote</name>
+ <value>false</value>
+ <tag>SCM, OZONE, HA, RATIS</tag>
+ <description>Enable/disable SCM HA leader election pre-vote
phase.</description>
+ </property>
+ <property>
<name>ozone.scm.ha.ratis.leader.ready.wait.timeout</name>
<value>60s</value>
<tag>SCM, OZONE, HA, RATIS</tag>
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 97d712e..d152da7 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
@@ -265,7 +265,8 @@ public final class XceiverServerRatis implements
XceiverServerSpi {
RaftServerConfigKeys.Log.setSegmentCacheNumMax(properties, 2);
// Disable the pre vote feature in Ratis
- RaftServerConfigKeys.LeaderElection.setPreVote(properties, false);
+ RaftServerConfigKeys.LeaderElection.setPreVote(properties,
+ conf.getObject(DatanodeRatisServerConfig.class).isPreVoteEnabled());
// Set the ratis storage directory
Collection<String> storageDirPaths =
diff --git
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/conf/DatanodeRatisServerConfig.java
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/conf/DatanodeRatisServerConfig.java
index 8392789..25ed477 100644
---
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/conf/DatanodeRatisServerConfig.java
+++
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/conf/DatanodeRatisServerConfig.java
@@ -139,4 +139,20 @@ public class DatanodeRatisServerConfig {
public void setLeaderNumPendingRequests(boolean delete) {
this.shouldDeleteRatisLogDirectory = delete;
}
+
+ @Config(key = "leaderelection.pre-vote",
+ defaultValue = "false",
+ type = ConfigType.BOOLEAN,
+ tags = {OZONE, DATANODE, RATIS},
+ description = "Flag to enable/disable ratis election pre-vote."
+ )
+ private boolean preVoteEnabled;
+
+ public boolean isPreVoteEnabled() {
+ return preVoteEnabled;
+ }
+
+ public void setPreVote(boolean preVote) {
+ this.preVoteEnabled = preVote;
+ }
}
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 6f2a746..e949850 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
@@ -73,7 +73,7 @@ public final class RatisUtil {
setRaftLogProperties(properties, conf);
setRaftRetryCacheProperties(properties, conf);
setRaftSnapshotProperties(properties, conf);
- setRaftLeadElectionProperties(properties);
+ setRaftLeadElectionProperties(properties, conf);
return properties;
}
@@ -151,9 +151,12 @@ public final class RatisUtil {
*
*/
private static void setRaftLeadElectionProperties(
- final RaftProperties properties) {
- // Disable the pre vote feature (related to leader election) in Ratis
- RaftServerConfigKeys.LeaderElection.setPreVote(properties, false);
+ final RaftProperties properties, final ConfigurationSource ozoneConf) {
+ //Disable/Enable the pre vote feature (related to leader election) in Ratis
+ RaftServerConfigKeys.LeaderElection.setPreVote(properties,
+ ozoneConf.getBoolean(
+ ScmConfigKeys.OZONE_SCM_HA_RATIS_SERVER_ELECTION_PRE_VOTE,
+
ScmConfigKeys.OZONE_SCM_HA_RATIS_SERVER_ELECTION_PRE_VOTE_DEFAULT));
}
/**
diff --git
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/OMConfigKeys.java
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/OMConfigKeys.java
index 563f99c..a02484d 100644
---
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/OMConfigKeys.java
+++
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/OMConfigKeys.java
@@ -161,6 +161,12 @@ public final class OMConfigKeys {
OZONE_OM_RATIS_SERVER_FAILURE_TIMEOUT_DURATION_DEFAULT
= TimeDuration.valueOf(120, TimeUnit.SECONDS);
+ public static final String OZONE_OM_RATIS_SERVER_ELECTION_PRE_VOTE =
+ "ozone.om.ratis.server.leaderelection.pre-vote";
+ public static final boolean
+ OZONE_OM_RATIS_SERVER_ELECTION_PRE_VOTE_DEFAULT = false;
+
+
// OM SnapshotProvider configurations
public static final String OZONE_OM_RATIS_SNAPSHOT_DIR =
"ozone.om.ratis.snapshot.dir";
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerRatisServer.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerRatisServer.java
index 99ada2f..94762d4 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerRatisServer.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/OzoneManagerRatisServer.java
@@ -549,8 +549,10 @@ public final class OzoneManagerRatisServer {
// Set Ratis storage directory
RaftServerConfigKeys.setStorageDir(properties,
Collections.singletonList(new File(ratisStorageDir)));
- // Disable the pre vote feature in Ratis
- RaftServerConfigKeys.LeaderElection.setPreVote(properties, false);
+ // Disable/enable the pre vote feature in Ratis
+ RaftServerConfigKeys.LeaderElection.setPreVote(properties,
+ conf.getBoolean(OMConfigKeys.OZONE_OM_RATIS_SERVER_ELECTION_PRE_VOTE,
+ OMConfigKeys.OZONE_OM_RATIS_SERVER_ELECTION_PRE_VOTE_DEFAULT));
// Set RAFT segment size
final long raftSegmentSize = (long) conf.getStorageSize(
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]