You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by el...@apache.org on 2017/12/13 17:15:35 UTC

[2/2] hbase git commit: HBASE-19456 RegionMover's region server hostname option is no longer case insensitive

HBASE-19456 RegionMover's region server hostname option is no longer case insensitive

Signed-off-by: Josh Elser <el...@apache.org>


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

Branch: refs/heads/master
Commit: d0c2329aa8baadfdf9752b0341628075f955f1e8
Parents: 86043ef
Author: Sergey Soldatov <ss...@apache.org>
Authored: Tue Dec 12 08:43:18 2017 -0800
Committer: Josh Elser <el...@apache.org>
Committed: Wed Dec 13 12:03:14 2017 -0500

----------------------------------------------------------------------
 .../apache/hadoop/hbase/util/RegionMover.java   | 15 ++++++------
 .../hadoop/hbase/util/TestRegionMover.java      | 24 ++++++++++++++++++--
 2 files changed, 30 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/d0c2329a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionMover.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionMover.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionMover.java
index b1c1f07..2dc1fe9 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionMover.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionMover.java
@@ -127,7 +127,7 @@ public class RegionMover extends AbstractHBaseTool {
      *     or hostname:port.
      */
     public RegionMoverBuilder(String hostname) {
-      String[] splitHostname = hostname.split(":");
+      String[] splitHostname = hostname.toLowerCase().split(":");
       this.hostname = splitHostname[0];
       if (splitHostname.length == 2) {
         this.port = Integer.parseInt(splitHostname[1]);
@@ -409,7 +409,8 @@ public class RegionMover extends AbstractHBaseTool {
         counter++;
         continue;
       } else if (server.equals(currentServer)) {
-        LOG.info("Region " + region.getRegionNameAsString() + "already on target server=" + server);
+        LOG.info("Region " + region.getRegionNameAsString() +
+            " is already on target server=" + server);
         counter++;
         continue;
       }
@@ -805,7 +806,7 @@ public class RegionMover extends AbstractHBaseTool {
     while (i.hasNext()) {
       server = i.next();
       String[] splitServer = server.split(ServerName.SERVERNAME_SEPARATOR);
-      if (splitServer[0].equals(hostname) && splitServer[1].equals(portString)) {
+      if (splitServer[0].equalsIgnoreCase(hostname) && splitServer[1].equals(portString)) {
         i.remove();
         return server;
       }
@@ -828,7 +829,7 @@ public class RegionMover extends AbstractHBaseTool {
         admin.getClusterStatus(EnumSet.of(Option.LIVE_SERVERS)).getServers());
     ArrayList<String> regionServers = new ArrayList<>(serverInfo.size());
     for (ServerName server : serverInfo) {
-      regionServers.add(server.getServerName());
+      regionServers.add(server.getServerName().toLowerCase());
     }
     return regionServers;
   }
@@ -905,7 +906,7 @@ public class RegionMover extends AbstractHBaseTool {
       int maxWaitInSeconds =
           admin.getConfiguration().getInt(MOVE_WAIT_MAX_KEY, DEFAULT_MOVE_WAIT_MAX);
       try {
-        server = locator.waitMetaRegionLocation(zkw, maxWaitInSeconds * 1000).toString() + ",";
+        server = locator.waitMetaRegionLocation(zkw, maxWaitInSeconds * 1000).toString();
       } catch (InterruptedException e) {
         LOG.error("Interrupted while waiting for location of Meta", e);
       } finally {
@@ -926,8 +927,8 @@ public class RegionMover extends AbstractHBaseTool {
           byte[] startcode =
               result.getValue(HConstants.CATALOG_FAMILY, HConstants.STARTCODE_QUALIFIER);
           if (servername != null) {
-            server =
-                Bytes.toString(servername).replaceFirst(":", ",") + "," + Bytes.toLong(startcode);
+            server = Bytes.toString(servername).replaceFirst(":", ",").toLowerCase() + "," +
+                Bytes.toLong(startcode);
           }
         }
       } catch (IOException e) {

http://git-wip-us.apache.org/repos/asf/hbase/blob/d0c2329a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestRegionMover.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestRegionMover.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestRegionMover.java
index 7322de8..68196a0 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestRegionMover.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestRegionMover.java
@@ -107,7 +107,6 @@ public class TestRegionMover {
 
   /** Test to unload a regionserver first and then load it using no Ack mode
    * we check if some regions are loaded on the region server(since no ack is best effort)
-   * @throws Exception
    */
   @Test
   public void testLoadWithoutAck() throws Exception {
@@ -172,9 +171,30 @@ public class TestRegionMover {
   }
 
   /**
+   * Test that loading the same region set doesn't cause timeout loop during meta load.
+   */
+  @Test(timeout = 30000)
+  public void testRepeatedLoad() throws Exception {
+    MiniHBaseCluster cluster = TEST_UTIL.getHBaseCluster();
+    HRegionServer regionServer = cluster.getRegionServer(0);
+    String rsName = regionServer.getServerName().getHostname();
+    int port = regionServer.getServerName().getPort();
+    String rs = rsName + ":" + Integer.toString(port);
+    RegionMoverBuilder rmBuilder = new RegionMoverBuilder(rs).ack(true);
+    RegionMover rm = rmBuilder.build();
+    rm.setConf(TEST_UTIL.getConfiguration());
+    rm.unload();
+    assertEquals(0, regionServer.getNumberOfOnlineRegions());
+    rmBuilder = new RegionMoverBuilder(rs).ack(true);
+    rm = rmBuilder.build();
+    rm.setConf(TEST_UTIL.getConfiguration());
+    rm.load();
+    rm.load(); //Repeat the same load. It should be very fast because all regions are already moved.
+  }
+
+  /**
    * To test that we successfully exclude a server from the unloading process We test for the number
    * of regions on Excluded server and also test that regions are unloaded successfully
-   * @throws Exception
    */
   @Test
   public void testExclude() throws Exception {