You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ap...@apache.org on 2018/11/08 23:21:36 UTC

[8/8] hbase git commit: HBASE-21439 RegionLoads aren't being used in RegionLoad cost functions

HBASE-21439 RegionLoads aren't being used in RegionLoad cost functions

Amend HBASE-21439 Update RSGroup Test too

Signed-off-by: tedyu <yu...@gmail.com>
Signed-off-by: Andrew Purtell <ap...@apache.org>

Amending-Author: Andrew Purtell <ap...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/68c93966
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/68c93966
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/68c93966

Branch: refs/heads/branch-1
Commit: 68c939668540671a925d102c79d9958f739067e4
Parents: 36178f7
Author: Ben Lau <be...@oath.com>
Authored: Mon Nov 5 15:34:08 2018 -0800
Committer: Andrew Purtell <ap...@apache.org>
Committed: Thu Nov 8 14:21:51 2018 -0800

----------------------------------------------------------------------
 .../org/apache/hadoop/hbase/HRegionInfo.java    | 22 ++++++++++++++++++++
 ...cerWithStochasticLoadBalancerAsInternal.java |  2 +-
 .../master/balancer/StochasticLoadBalancer.java |  7 +++----
 .../balancer/TestStochasticLoadBalancer.java    |  8 ++++---
 4 files changed, 31 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/68c93966/hbase-client/src/main/java/org/apache/hadoop/hbase/HRegionInfo.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/HRegionInfo.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/HRegionInfo.java
index 8d93655..de503b5 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/HRegionInfo.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/HRegionInfo.java
@@ -48,6 +48,8 @@ import org.apache.hadoop.hbase.util.Pair;
 import org.apache.hadoop.hbase.util.PairOfSameType;
 import org.apache.hadoop.io.DataInputBuffer;
 
+import edu.umd.cs.findbugs.annotations.CheckForNull;
+
 /**
  * Information about a region. A region is a range of keys in the whole keyspace of a table, an
  * identifier (a timestamp) for differentiating between subset ranges (after region split)
@@ -189,6 +191,26 @@ public class HRegionInfo implements Comparable<HRegionInfo> {
     return encodedName;
   }
 
+  @InterfaceAudience.Private
+  public static String getRegionNameAsString(byte[] regionName) {
+    return getRegionNameAsString(null, regionName);
+  }
+
+  @InterfaceAudience.Private
+  public static String getRegionNameAsString(@CheckForNull HRegionInfo ri, byte[] regionName) {
+    if (hasEncodedName(regionName)) {
+      // new format region names already have their encoded name.
+      return Bytes.toStringBinary(regionName);
+    }
+
+    // old format. regionNameStr doesn't have the region name.
+    if (ri == null) {
+      return Bytes.toStringBinary(regionName) + "." + encodeRegionName(regionName);
+    } else {
+      return Bytes.toStringBinary(regionName) + "." + ri.getEncodedName();
+    }
+  }
+
   /**
    * @return Return a short, printable name for this region (usually encoded name) for us logging.
    */

http://git-wip-us.apache.org/repos/asf/hbase/blob/68c93966/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/master/balancer/TestRSGroupBasedLoadBalancerWithStochasticLoadBalancerAsInternal.java
----------------------------------------------------------------------
diff --git a/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/master/balancer/TestRSGroupBasedLoadBalancerWithStochasticLoadBalancerAsInternal.java b/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/master/balancer/TestRSGroupBasedLoadBalancerWithStochasticLoadBalancerAsInternal.java
index 771b59f..4f4162c 100644
--- a/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/master/balancer/TestRSGroupBasedLoadBalancerWithStochasticLoadBalancerAsInternal.java
+++ b/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/master/balancer/TestRSGroupBasedLoadBalancerWithStochasticLoadBalancerAsInternal.java
@@ -84,7 +84,7 @@ public class TestRSGroupBasedLoadBalancerWithStochasticLoadBalancerAsInternal
       when(rl.getWriteRequestsCount()).thenReturn(0L);
       when(rl.getMemStoreSizeMB()).thenReturn(0);
       when(rl.getStorefileSizeMB()).thenReturn(0);
-      regionLoadMap.put(info.getEncodedNameAsBytes(), rl);
+      regionLoadMap.put(info.getRegionName(), rl);
     }
     when(serverMetrics.getRegionsLoad()).thenReturn(regionLoadMap);
     return serverMetrics;

http://git-wip-us.apache.org/repos/asf/hbase/blob/68c93966/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java
index 2cfe2dc..84cf30a 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java
@@ -51,7 +51,6 @@ import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer.Cluster.AssignRe
 import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer.Cluster.LocalityType;
 import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer.Cluster.MoveRegionAction;
 import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer.Cluster.SwapRegionsAction;
-import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
 
 import com.google.common.base.Optional;
@@ -545,7 +544,8 @@ public class StochasticLoadBalancer extends BaseLoadBalancer {
         continue;
       }
       for (Entry<byte[], RegionLoad> entry : sl.getRegionsLoad().entrySet()) {
-        Deque<RegionLoad> rLoads = oldLoads.get(Bytes.toString(entry.getKey()));
+        String regionNameAsString = HRegionInfo.getRegionNameAsString(entry.getKey());
+        Deque<RegionLoad> rLoads = oldLoads.get(regionNameAsString);
         if (rLoads == null) {
           // There was nothing there
           rLoads = new ArrayDeque<RegionLoad>();
@@ -553,8 +553,7 @@ public class StochasticLoadBalancer extends BaseLoadBalancer {
           rLoads.remove();
         }
         rLoads.add(entry.getValue());
-        loads.put(Bytes.toString(entry.getKey()), rLoads);
-
+        loads.put(regionNameAsString, rLoads);
       }
     }
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/68c93966/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancer.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancer.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancer.java
index ad459c1..40bec19 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancer.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancer.java
@@ -142,10 +142,12 @@ public class TestStochasticLoadBalancer extends BalancerTestBase {
 
       loadBalancer.setClusterStatus(clusterStatus);
     }
-    assertTrue(loadBalancer.loads.get(REGION_KEY) != null);
-    assertTrue(loadBalancer.loads.get(REGION_KEY).size() == 15);
 
-    Queue<RegionLoad> loads = loadBalancer.loads.get(REGION_KEY);
+    String regionNameAsString = HRegionInfo.getRegionNameAsString(Bytes.toBytes(REGION_KEY));
+    assertTrue(loadBalancer.loads.get(regionNameAsString) != null);
+    assertTrue(loadBalancer.loads.get(regionNameAsString).size() == 15);
+
+    Queue<RegionLoad> loads = loadBalancer.loads.get(regionNameAsString);
     int i = 0;
     while(loads.size() > 0) {
       RegionLoad rl = loads.remove();