You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zh...@apache.org on 2018/09/28 13:35:43 UTC
hbase git commit: HBASE-21249 Add jitter for
ProcedureUtil.getBackoffTimeMs
Repository: hbase
Updated Branches:
refs/heads/master d39ea25d4 -> 6bc7089f9
HBASE-21249 Add jitter for ProcedureUtil.getBackoffTimeMs
Signed-off-by: zhangduo <zh...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/6bc7089f
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/6bc7089f
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/6bc7089f
Branch: refs/heads/master
Commit: 6bc7089f9e0793efc9bdd46a84f5ccd9bc4579ad
Parents: d39ea25
Author: meiyi <my...@gamil.com>
Authored: Fri Sep 28 16:04:37 2018 +0800
Committer: zhangduo <zh...@apache.org>
Committed: Fri Sep 28 21:27:45 2018 +0800
----------------------------------------------------------------------
.../hadoop/hbase/procedure2/ProcedureUtil.java | 6 +++++-
.../hadoop/hbase/procedure2/TestProcedureUtil.java | 15 ++++++++++++---
2 files changed, 17 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/6bc7089f/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/ProcedureUtil.java
----------------------------------------------------------------------
diff --git a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/ProcedureUtil.java b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/ProcedureUtil.java
index 8c8746e..27802ef 100644
--- a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/ProcedureUtil.java
+++ b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/ProcedureUtil.java
@@ -21,6 +21,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;
+import java.util.concurrent.ThreadLocalRandom;
import org.apache.hadoop.hbase.HConstants;
import org.apache.yetus.audience.InterfaceAudience;
import org.apache.hbase.thirdparty.com.google.common.base.Preconditions;
@@ -343,6 +344,9 @@ public final class ProcedureUtil {
if (attempts >= 30) {
return maxBackoffTime;
}
- return Math.min((long) (1000 * Math.pow(2, attempts)), maxBackoffTime);
+ long backoffTimeMs = Math.min((long) (1000 * Math.pow(2, attempts)), maxBackoffTime);
+ // 1% possible jitter
+ long jitter = (long) (backoffTimeMs * ThreadLocalRandom.current().nextFloat() * 0.01f);
+ return backoffTimeMs + jitter;
}
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/6bc7089f/hbase-procedure/src/test/java/org/apache/hadoop/hbase/procedure2/TestProcedureUtil.java
----------------------------------------------------------------------
diff --git a/hbase-procedure/src/test/java/org/apache/hadoop/hbase/procedure2/TestProcedureUtil.java b/hbase-procedure/src/test/java/org/apache/hadoop/hbase/procedure2/TestProcedureUtil.java
index 6342bec..3629fb7 100644
--- a/hbase-procedure/src/test/java/org/apache/hadoop/hbase/procedure2/TestProcedureUtil.java
+++ b/hbase-procedure/src/test/java/org/apache/hadoop/hbase/procedure2/TestProcedureUtil.java
@@ -18,6 +18,7 @@
package org.apache.hadoop.hbase.procedure2;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import java.util.concurrent.TimeUnit;
import org.apache.hadoop.hbase.HBaseClassTestRule;
@@ -63,9 +64,17 @@ public class TestProcedureUtil {
for (int i = 30; i < 1000; i++) {
assertEquals(TimeUnit.MINUTES.toMillis(10), ProcedureUtil.getBackoffTimeMs(30));
}
- assertEquals(1000, ProcedureUtil.getBackoffTimeMs(0));
- assertEquals(2000, ProcedureUtil.getBackoffTimeMs(1));
- assertEquals(32000, ProcedureUtil.getBackoffTimeMs(5));
+ long backoffTimeMs = ProcedureUtil.getBackoffTimeMs(0);
+ assertTrue(backoffTimeMs >= 1000);
+ assertTrue(backoffTimeMs <= 1000 * 1.01f);
+
+ backoffTimeMs = ProcedureUtil.getBackoffTimeMs(1);
+ assertTrue(backoffTimeMs >= 2000);
+ assertTrue(backoffTimeMs <= 2000 * 1.01f);
+
+ backoffTimeMs = ProcedureUtil.getBackoffTimeMs(5);
+ assertTrue(backoffTimeMs >= 32000);
+ assertTrue(backoffTimeMs <= 32000 * 1.01f);
}
public static class TestProcedureNoDefaultConstructor extends TestProcedure {