This is an automated email from the ASF dual-hosted git repository.
ljain pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hadoop-ozone.git
The following commit(s) were added to refs/heads/master by this push:
new a9990f6 HDDS-2622. Add config parameter for setting limit on total
bytes of pending requests in Ratis. (#264)
a9990f6 is described below
commit a9990f60d0a0d7e6fd493cb58e4a4fa85455e8bc
Author: Hanisha Koneru <[email protected]>
AuthorDate: Wed Dec 4 21:21:47 2019 -0800
HDDS-2622. Add config parameter for setting limit on total bytes of pending
requests in Ratis. (#264)
---
.../org/apache/hadoop/hdds/scm/ScmConfigKeys.java | 5 +++++
.../org/apache/hadoop/ozone/OzoneConfigKeys.java | 5 +++++
.../common/src/main/resources/ozone-default.xml | 8 ++++++++
.../transport/server/ratis/XceiverServerRatis.java | 24 +++++++++++++++++-----
4 files changed, 37 insertions(+), 5 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 02aba5c..00d326e 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
@@ -110,6 +110,11 @@ public final class ScmConfigKeys {
"dfs.container.ratis.leader.num.pending.requests";
public static final int
DFS_CONTAINER_RATIS_LEADER_NUM_PENDING_REQUESTS_DEFAULT = 4096;
+ public static final String DFS_CONTAINER_RATIS_LEADER_PENDING_BYTES_LIMIT =
+ "dfs.container.ratis.leader.pending.bytes.limit";
+ public static final String
+ DFS_CONTAINER_RATIS_LEADER_PENDING_BYTES_LIMIT_DEFAULT = "1GB";
+
// expiry interval stateMachineData cache entry inside containerStateMachine
public static final String
DFS_CONTAINER_RATIS_STATEMACHINEDATA_CACHE_EXPIRY_INTERVAL =
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 2705dfa..4b18d12 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
@@ -331,6 +331,11 @@ public final class OzoneConfigKeys {
public static final int
DFS_CONTAINER_RATIS_LEADER_NUM_PENDING_REQUESTS_DEFAULT =
ScmConfigKeys.DFS_CONTAINER_RATIS_LEADER_NUM_PENDING_REQUESTS_DEFAULT;
+ public static final String DFS_CONTAINER_RATIS_LEADER_PENDING_BYTES_LIMIT =
+ ScmConfigKeys.DFS_CONTAINER_RATIS_LEADER_PENDING_BYTES_LIMIT;
+ public static final String
+ DFS_CONTAINER_RATIS_LEADER_PENDING_BYTES_LIMIT_DEFAULT =
+ ScmConfigKeys.DFS_CONTAINER_RATIS_LEADER_PENDING_BYTES_LIMIT_DEFAULT;
public static final String DFS_RATIS_SERVER_REQUEST_TIMEOUT_DURATION_KEY =
ScmConfigKeys.DFS_RATIS_SERVER_REQUEST_TIMEOUT_DURATION_KEY;
public static final TimeDuration
diff --git a/hadoop-hdds/common/src/main/resources/ozone-default.xml
b/hadoop-hdds/common/src/main/resources/ozone-default.xml
index 0dfd179..22d94f6 100644
--- a/hadoop-hdds/common/src/main/resources/ozone-default.xml
+++ b/hadoop-hdds/common/src/main/resources/ozone-default.xml
@@ -212,6 +212,14 @@
</description>
</property>
<property>
+ <name>dfs.container.ratis.leader.pending.bytes.limit</name>
+ <value>1GB</value>
+ <tag>OZONE, RATIS, PERFORMANCE</tag>
+ <description>Limit on the total bytes of pending requests after which
+ leader starts rejecting requests from client.
+ </description>
+ </property>
+ <property>
<name>dfs.container.ratis.replication.level</name>
<value>MAJORITY</value>
<tag>OZONE, 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 a76944b..961df2c 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
@@ -231,11 +231,10 @@ public final class XceiverServerRatis implements
XceiverServerSpi {
setAutoTriggerEnabled(properties, true);
RaftServerConfigKeys.Snapshot.
setAutoTriggerThreshold(properties, snapshotThreshold);
- int maxPendingRequets = conf.getInt(
- OzoneConfigKeys.DFS_CONTAINER_RATIS_LEADER_NUM_PENDING_REQUESTS,
- OzoneConfigKeys.DFS_CONTAINER_RATIS_LEADER_NUM_PENDING_REQUESTS_DEFAULT
- );
- RaftServerConfigKeys.Write.setElementLimit(properties, maxPendingRequets);
+
+ // Set the limit on num/ bytes of pending requests a Ratis leader can hold
+ setPendingRequestsLimits(properties);
+
int logQueueNumElements =
conf.getInt(OzoneConfigKeys.DFS_CONTAINER_RATIS_LOG_QUEUE_NUM_ELEMENTS,
OzoneConfigKeys.DFS_CONTAINER_RATIS_LOG_QUEUE_NUM_ELEMENTS_DEFAULT);
@@ -394,6 +393,21 @@ public final class XceiverServerRatis implements
XceiverServerSpi {
return rpc;
}
+ private void setPendingRequestsLimits(RaftProperties properties) {
+ final int maxPendingRequests = conf.getInt(
+ OzoneConfigKeys.DFS_CONTAINER_RATIS_LEADER_NUM_PENDING_REQUESTS,
+ OzoneConfigKeys.DFS_CONTAINER_RATIS_LEADER_NUM_PENDING_REQUESTS_DEFAULT
+ );
+ RaftServerConfigKeys.Write.setElementLimit(properties, maxPendingRequests);
+
+ final int pendingRequestsByteLimit = (int)conf.getStorageSize(
+ OzoneConfigKeys.DFS_CONTAINER_RATIS_LEADER_PENDING_BYTES_LIMIT,
+ OzoneConfigKeys.DFS_CONTAINER_RATIS_LEADER_PENDING_BYTES_LIMIT_DEFAULT,
+ StorageUnit.BYTES);
+ RaftServerConfigKeys.Write.setByteLimit(properties,
+ pendingRequestsByteLimit);
+ }
+
public static XceiverServerRatis newXceiverServerRatis(
DatanodeDetails datanodeDetails, OzoneConfiguration ozoneConf,
ContainerDispatcher dispatcher, ContainerController containerController,
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]