You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2015/02/17 06:00:12 UTC

hbase git commit: HBASE-13041 TestEnableTableHandler should not call AssignmentManager#assign concurrently with master (Andrey Stepachev)

Repository: hbase
Updated Branches:
  refs/heads/master 0d880c99b -> d3621d24d


HBASE-13041 TestEnableTableHandler should not call AssignmentManager#assign concurrently with master (Andrey Stepachev)


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

Branch: refs/heads/master
Commit: d3621d24ded796dc0f50ca4cccfec400837a9e51
Parents: 0d880c9
Author: stack <st...@apache.org>
Authored: Mon Feb 16 21:00:00 2015 -0800
Committer: stack <st...@apache.org>
Committed: Mon Feb 16 21:00:00 2015 -0800

----------------------------------------------------------------------
 .../master/handler/TestEnableTableHandler.java  | 37 +++++++++++++++-----
 1 file changed, 28 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/d3621d24/hbase-server/src/test/java/org/apache/hadoop/hbase/master/handler/TestEnableTableHandler.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/handler/TestEnableTableHandler.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/handler/TestEnableTableHandler.java
index d3d6239..6a60fc0 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/handler/TestEnableTableHandler.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/handler/TestEnableTableHandler.java
@@ -18,8 +18,13 @@
  */
 package org.apache.hadoop.hbase.master.handler;
 
+import java.util.ArrayList;
 import java.util.List;
 
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Iterators;
+import com.google.common.collect.Lists;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hbase.HConstants;
@@ -81,7 +86,6 @@ public class TestEnableTableHandler {
 
     admin.enableTable(tableName);
     TEST_UTIL.waitTableEnabled(tableName);
-
     // disable once more
     admin.disableTable(tableName);
 
@@ -91,21 +95,36 @@ public class TestEnableTableHandler {
     rs.getRegionServer().stop("stop");
     cluster.waitForRegionServerToStop(rs.getRegionServer().getServerName(), 10000);
 
-    EnableTableHandler handler =
-        new EnableTableHandler(m, tableName, m.getAssignmentManager(), m.getTableLockManager(),
-            true);
-    handler.prepare();
-    handler.process();
+    LOG.debug("Now enabling table " + tableName);
 
+    admin.enableTable(tableName);
     assertTrue(admin.isTableEnabled(tableName));
 
     JVMClusterUtil.RegionServerThread rs2 = cluster.startRegionServer();
-    m.getAssignmentManager().assign(admin.getTableRegions(tableName));
+    cluster.waitForRegionServerToStart(rs2.getRegionServer().getServerName().getHostname(),
+        rs2.getRegionServer().getServerName().getPort(), 60000);
+
+    List<HRegionInfo> regions = TEST_UTIL.getHBaseAdmin().getTableRegions(tableName);
+    assertEquals(1, regions.size());
+    for (HRegionInfo region : regions) {
+      TEST_UTIL.getHBaseAdmin().assign(region.getEncodedNameAsBytes());
+    }
+    LOG.debug("Waiting for table assigned " + tableName);
     TEST_UTIL.waitUntilAllRegionsAssigned(tableName);
     List<HRegionInfo> onlineRegions = admin.getOnlineRegions(
         rs2.getRegionServer().getServerName());
-    assertEquals(1, onlineRegions.size());
-    assertEquals(tableName, onlineRegions.get(0).getTable());
+    ArrayList<HRegionInfo> tableRegions = filterTableRegions(tableName, onlineRegions);
+    assertEquals(1, tableRegions.size());
+  }
+
+  private ArrayList<HRegionInfo> filterTableRegions(final TableName tableName,
+      List<HRegionInfo> onlineRegions) {
+    return Lists.newArrayList(Iterables.filter(onlineRegions, new Predicate<HRegionInfo>() {
+      @Override
+      public boolean apply(HRegionInfo input) {
+        return input.getTable().equals(tableName);
+      }
+    }));
   }
 
   /**