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:33 UTC

[5/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

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

Conflicts:
	hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancer.java


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

Branch: refs/heads/branch-2.1
Commit: 0875fa0634e0c78fc0776520602eeb35ee623f80
Parents: 3a13088
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:09:55 2018 -0800

----------------------------------------------------------------------
 .../apache/hadoop/hbase/client/RegionInfo.java  | 22 ++++++++++++++++++++
 .../hadoop/hbase/client/RegionInfoBuilder.java  | 10 +--------
 .../master/balancer/StochasticLoadBalancer.java |  6 +++---
 .../balancer/TestStochasticLoadBalancer.java    |  8 ++++---
 4 files changed, 31 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/0875fa06/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RegionInfo.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RegionInfo.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RegionInfo.java
index 7f5d399..5bb4aef 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RegionInfo.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RegionInfo.java
@@ -18,6 +18,8 @@
  */
 package org.apache.hadoop.hbase.client;
 
+import edu.umd.cs.findbugs.annotations.CheckForNull;
+
 import java.io.DataInputStream;
 import java.io.IOException;
 import java.util.ArrayList;
@@ -271,6 +273,26 @@ public interface RegionInfo {
     return encodedName;
   }
 
+  @InterfaceAudience.Private
+  static String getRegionNameAsString(byte[] regionName) {
+    return getRegionNameAsString(null, regionName);
+  }
+
+  @InterfaceAudience.Private
+  static String getRegionNameAsString(@CheckForNull RegionInfo ri, byte[] regionName) {
+    if (RegionInfo.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) + "." + RegionInfo.encodeRegionName(regionName);
+    } else {
+      return Bytes.toStringBinary(regionName) + "." + ri.getEncodedName();
+    }
+  }
+
   /**
    * @return Return a String of short, printable names for <code>hris</code>
    * (usually encoded name) for us logging.

http://git-wip-us.apache.org/repos/asf/hbase/blob/0875fa06/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RegionInfoBuilder.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RegionInfoBuilder.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RegionInfoBuilder.java
index 3de9860..cd9e40b 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RegionInfoBuilder.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RegionInfoBuilder.java
@@ -287,15 +287,7 @@ public class RegionInfoBuilder {
      */
     @Override
     public String getRegionNameAsString() {
-      if (RegionInfo.hasEncodedName(this.regionName)) {
-        // new format region names already have their encoded name.
-        return Bytes.toStringBinary(this.regionName);
-      }
-
-      // old format. regionNameStr doesn't have the region name.
-      //
-      //
-      return Bytes.toStringBinary(this.regionName) + "." + this.getEncodedName();
+      return RegionInfo.getRegionNameAsString(this, this.regionName);
     }
 
     /** @return the encoded region name */

http://git-wip-us.apache.org/repos/asf/hbase/blob/0875fa06/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 b2c6629..d25d1ec 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
@@ -45,7 +45,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 org.apache.yetus.audience.InterfaceAudience;
 import org.slf4j.Logger;
@@ -531,14 +530,15 @@ public class StochasticLoadBalancer extends BaseLoadBalancer {
 
     clusterStatus.getLiveServerMetrics().forEach((ServerName sn, ServerMetrics sm) -> {
       sm.getRegionMetrics().forEach((byte[] regionName, RegionMetrics rm) -> {
-        Deque<BalancerRegionLoad> rLoads = oldLoads.get(Bytes.toString(regionName));
+        String regionNameAsString = RegionInfo.getRegionNameAsString(regionName);
+        Deque<BalancerRegionLoad> rLoads = oldLoads.get(regionNameAsString);
         if (rLoads == null) {
           rLoads = new ArrayDeque<>(numRegionLoadsToRemember + 1);
         } else if (rLoads.size() >= numRegionLoadsToRemember) {
           rLoads.remove();
         }
         rLoads.add(new BalancerRegionLoad(rm));
-        loads.put(Bytes.toString(regionName), rLoads);
+        loads.put(regionNameAsString, rLoads);
       });
     });
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/0875fa06/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 149bf68..41c3c4e 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.setClusterMetrics(clusterStatus);
     }
-    assertTrue(loadBalancer.loads.get(REGION_KEY) != null);
-    assertTrue(loadBalancer.loads.get(REGION_KEY).size() == 15);
 
-    Queue<BalancerRegionLoad> loads = loadBalancer.loads.get(REGION_KEY);
+    String regionNameAsString = RegionInfo.getRegionNameAsString(Bytes.toBytes(REGION_KEY));
+    assertTrue(loadBalancer.loads.get(regionNameAsString) != null);
+    assertTrue(loadBalancer.loads.get(regionNameAsString).size() == 15);
+
+    Queue<BalancerRegionLoad> loads = loadBalancer.loads.get(regionNameAsString);
     int i = 0;
     while(loads.size() > 0) {
       BalancerRegionLoad rl = loads.remove();