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 <hanishakon...@apache.org> 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: ozone-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: ozone-commits-h...@hadoop.apache.org