From 15c0385d4f4f6460fc63a1c1b7f349f431408495 Mon Sep 17 00:00:00 2001 From: jxiang Date: Mon, 18 Mar 2013 23:13:13 +0000 Subject: [PATCH] HBASE-7597 TestHBaseFsck#testRegionShouldNotBeDeployed seems to be flaky git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1458059 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/hbase/util/TestHBaseFsck.java | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java index 5108bf2cf6a..17e4852985f 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java @@ -1085,7 +1085,7 @@ public class TestHBaseFsck { } /** - * the region is not deployed when the table is disabled. + * The region is not deployed when the table is disabled. */ @Test public void testRegionShouldNotBeDeployed() throws Exception { @@ -1126,16 +1126,32 @@ public class TestHBaseFsck { ZKTable zkTable = cluster.getMaster().getAssignmentManager().getZKTable(); zkTable.setEnabledTable(table); HRegionInfo region = disabledRegions.remove(0); + byte[] regionName = region.getRegionName(); + + // The region should not be assigned currently + assertTrue(cluster.getServerWith(regionName) == -1); ZKAssign.createNodeOffline(zkw, region, serverName); ProtobufUtil.openRegion(hrs, region); int iTimes = 0; - byte[] regionName = region.getRegionName(); while (true) { if (cluster.getServerWith(regionName) != -1) { - // Now, region is deployed, reset the table state back - zkTable.setDisabledTable(table); - break; + List regions = ProtobufUtil.getOnlineRegions(hrs); + boolean found = false; + for (HRegionInfo hri: regions) { + if (Bytes.equals(hri.getRegionName(), regionName)) { + found = true; + break; + } + } + if (!found) { + LOG.info("Region was deployed but not in online " + + "region list. This should be transient. Waiting longer"); + } else { + // Now, region is deployed, reset the table state back + zkTable.setDisabledTable(table); + break; + } } Thread.sleep(100); iTimes++;