diff --git a/hadoop-hdds/common/src/main/resources/ozone-default.xml b/hadoop-hdds/common/src/main/resources/ozone-default.xml
index bf15e975b92d..16387561c2df 100644
--- a/hadoop-hdds/common/src/main/resources/ozone-default.xml
+++ b/hadoop-hdds/common/src/main/resources/ozone-default.xml
@@ -2183,6 +2183,20 @@
Byte limit for Raft's Log Worker queue.
+
+ ozone.om.ratis.server.pending.write.byte-limit
+ 64MB
+ OZONE, DEBUG, OM, RATIS
+ Maximum byte size of all pending write requests.
+
+
+
+ ozone.om.ratis.server.pending.write.element-limit
+ 4096
+ OZONE, DEBUG, OM, RATIS
+ Maximum number of pending write requests.
+
+
ozone.om.ratis.log.purge.gap
1000000
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 751e0a669f66..fc35ea378cc8 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
@@ -199,6 +199,15 @@ public final class OMConfigKeys {
"ozone.om.ratis.log.appender.queue.byte-limit";
public static final String
OZONE_OM_RATIS_LOG_APPENDER_QUEUE_BYTE_LIMIT_DEFAULT = "32MB";
+
+ // OM Ratis Pending Write configurations
+ public static final String OZONE_OM_RATIS_PENDING_WRITE_ELEMENT_LIMIT =
+ "ozone.om.ratis.server.pending.write.element-limit";
+ public static final int OZONE_OM_RATIS_PENDING_WRITE_NUM_LIMIT_DEFAULT = 4096;
+
+ public static final String OZONE_OM_RATIS_PENDING_WRITE_BYTE_LIMIT = "ozone.om.ratis.server.pending.write.byte-limit";
+ public static final String OZONE_OM_RATIS_PENDING_WRITE_BYTE_LIMIT_DEFAULT = "64MB";
+
public static final String OZONE_OM_RATIS_LOG_PURGE_GAP =
"ozone.om.ratis.log.purge.gap";
public static final int OZONE_OM_RATIS_LOG_PURGE_GAP_DEFAULT = 1000000;
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 76ca50b4124b..e1ef528d16ac 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
@@ -729,6 +729,13 @@ private static void setRaftLogProperties(RaftProperties properties,
// Set the number of maximum cached segments
RaftServerConfigKeys.Log.setSegmentCacheNumMax(properties, 2);
+
+ RaftServerConfigKeys.Write.setByteLimit(properties, SizeInBytes.valueOf((long) conf.getStorageSize(
+ OMConfigKeys.OZONE_OM_RATIS_PENDING_WRITE_BYTE_LIMIT,
+ OMConfigKeys.OZONE_OM_RATIS_PENDING_WRITE_BYTE_LIMIT_DEFAULT, StorageUnit.BYTES)));
+ RaftServerConfigKeys.Write.setElementLimit(properties, conf.getInt(
+ OMConfigKeys.OZONE_OM_RATIS_PENDING_WRITE_ELEMENT_LIMIT,
+ OMConfigKeys.OZONE_OM_RATIS_PENDING_WRITE_NUM_LIMIT_DEFAULT));
}
private static void setRaftRpcProperties(RaftProperties properties, ConfigurationSource conf) {