This is an automated email from the ASF dual-hosted git repository.

siyao pushed a commit to branch HDDS-7593
in repository https://gitbox.apache.org/repos/asf/ozone.git


The following commit(s) were added to refs/heads/HDDS-7593 by this push:
     new a33af1dbce HDDS-11226. Make ExponentialBackoffPolicy maxRetries 
configurable (#6985)
a33af1dbce is described below

commit a33af1dbce25ca3c1f71d833f506d8d8290a4213
Author: Ashish Kumar <[email protected]>
AuthorDate: Sat Aug 3 02:26:30 2024 +0530

    HDDS-11226. Make ExponentialBackoffPolicy maxRetries configurable (#6985)
---
 .../apache/hadoop/hdds/ratis/conf/RatisClientConfig.java  | 15 +++++++++++++++
 .../RequestTypeDependentRetryPolicyCreator.java           |  2 ++
 .../hadoop/hdds/ratis/conf/TestRatisClientConfig.java     |  5 +++++
 3 files changed, 22 insertions(+)

diff --git 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/ratis/conf/RatisClientConfig.java
 
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/ratis/conf/RatisClientConfig.java
index 680470187d..8fef494294 100644
--- 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/ratis/conf/RatisClientConfig.java
+++ 
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/ratis/conf/RatisClientConfig.java
@@ -203,6 +203,21 @@ public class RatisClientConfig {
     exponentialPolicyMaxSleep = duration;
   }
 
+  @Config(key = "client.exponential.backoff.max.retries",
+      defaultValue =  "2147483647",
+      type = ConfigType.INT,
+      tags = { OZONE, CLIENT, PERFORMANCE },
+      description = "Client's max retry value for the exponential backoff 
policy.")
+  private int exponentialPolicyMaxRetries = Integer.MAX_VALUE;
+
+  public int getExponentialPolicyMaxRetries() {
+    return exponentialPolicyMaxRetries;
+  }
+
+  public void setExponentialPolicyMaxRetries(int retry) {
+    exponentialPolicyMaxRetries = retry;
+  }
+
   @Config(key = "client.retrylimited.retry.interval",
       defaultValue = "1s",
       type = ConfigType.TIME,
diff --git 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/ratis/retrypolicy/RequestTypeDependentRetryPolicyCreator.java
 
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/ratis/retrypolicy/RequestTypeDependentRetryPolicyCreator.java
index f8cda814f4..ff00743b25 100644
--- 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/ratis/retrypolicy/RequestTypeDependentRetryPolicyCreator.java
+++ 
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/ratis/retrypolicy/RequestTypeDependentRetryPolicyCreator.java
@@ -96,6 +96,8 @@ public class RequestTypeDependentRetryPolicyCreator
             toTimeDuration(ratisClientConfig.getExponentialPolicyBaseSleep()))
         .setMaxSleepTime(
             toTimeDuration(ratisClientConfig.getExponentialPolicyMaxSleep()))
+        .setMaxAttempts(
+            ratisClientConfig.getExponentialPolicyMaxRetries())
         .build();
   }
 
diff --git 
a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/ratis/conf/TestRatisClientConfig.java
 
b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/ratis/conf/TestRatisClientConfig.java
index 2d16af2a0c..d0e710cb81 100644
--- 
a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/ratis/conf/TestRatisClientConfig.java
+++ 
b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/ratis/conf/TestRatisClientConfig.java
@@ -44,6 +44,8 @@ class TestRatisClientConfig {
         subject.getWatchRequestTimeout());
     assertEquals(fromConfig.getWriteRequestTimeout(),
         subject.getWriteRequestTimeout());
+    assertEquals(fromConfig.getExponentialPolicyMaxRetries(),
+        subject.getExponentialPolicyMaxRetries());
   }
 
   @Test
@@ -53,16 +55,19 @@ class TestRatisClientConfig {
     final Duration maxSleep = Duration.ofMinutes(2);
     final Duration watchRequestTimeout = Duration.ofMillis(555);
     final Duration writeRequestTimeout = Duration.ofMillis(444);
+    final int maxRetry = 10;
 
     subject.setExponentialPolicyBaseSleep(baseSleep);
     subject.setExponentialPolicyMaxSleep(maxSleep);
     subject.setWatchRequestTimeout(watchRequestTimeout);
     subject.setWriteRequestTimeout(writeRequestTimeout);
+    subject.setExponentialPolicyMaxRetries(maxRetry);
 
     assertEquals(baseSleep, subject.getExponentialPolicyBaseSleep());
     assertEquals(maxSleep, subject.getExponentialPolicyMaxSleep());
     assertEquals(watchRequestTimeout, subject.getWatchRequestTimeout());
     assertEquals(writeRequestTimeout, subject.getWriteRequestTimeout());
+    assertEquals(maxRetry, subject.getExponentialPolicyMaxRetries());
   }
 
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to