From ed1090c2973fa62c73450286ae71975763754134 Mon Sep 17 00:00:00 2001 From: ashishk Date: Wed, 24 Jul 2024 19:26:45 +0530 Subject: [PATCH 1/2] HDDS-11226. Make ExponentialBackoffPolicy maxRetries as configurable. --- .../hadoop/hdds/ratis/conf/RatisClientConfig.java | 15 +++++++++++++++ .../RequestTypeDependentRetryPolicyCreator.java | 2 ++ .../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 680470187d55..099642c8c945 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 void setExponentialPolicyMaxSleep(Duration duration) { exponentialPolicyMaxSleep = duration; } + @Config(key = "client.exponential.backoff.max.retries", + defaultValue = "2147483647", + type = ConfigType.INT, + tags = { OZONE, CLIENT, PERFORMANCE }, + description = "Max retry count 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 f8cda814f4a6..ff00743b25d1 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 @@ private static ExponentialBackoffRetry createExponentialBackoffPolicy( 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 2d16af2a0cbd..d0e710cb81c2 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 @@ void defaults() { subject.getWatchRequestTimeout()); assertEquals(fromConfig.getWriteRequestTimeout(), subject.getWriteRequestTimeout()); + assertEquals(fromConfig.getExponentialPolicyMaxRetries(), + subject.getExponentialPolicyMaxRetries()); } @Test @@ -53,16 +55,19 @@ void setAndGet() { 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()); } } From 5c67ba59bed7a7ad05348e00ea1c5c18efd02ccf Mon Sep 17 00:00:00 2001 From: Siyao Meng <50227127+smengcl@users.noreply.github.com> Date: Fri, 2 Aug 2024 13:53:04 -0700 Subject: [PATCH 2/2] Update description --- .../org/apache/hadoop/hdds/ratis/conf/RatisClientConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 099642c8c945..8fef49429408 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 @@ -207,7 +207,7 @@ public void setExponentialPolicyMaxSleep(Duration duration) { defaultValue = "2147483647", type = ConfigType.INT, tags = { OZONE, CLIENT, PERFORMANCE }, - description = "Max retry count for the exponential backoff policy.") + description = "Client's max retry value for the exponential backoff policy.") private int exponentialPolicyMaxRetries = Integer.MAX_VALUE; public int getExponentialPolicyMaxRetries() {