diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java index 4a748b8..a2fe0d0 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java @@ -1383,6 +1383,11 @@ public class HMaster extends HRegionServer implements MasterServices, Server { getRegionState(Bytes.toString(encodedRegionName)); if (regionState == null) { throw new UnknownRegionException(Bytes.toStringBinary(encodedRegionName)); + } else if (!assignmentManager.getRegionStates() + .isRegionOnline(regionState.getRegion())) { + throw new HBaseIOException( + "moving region not onlined: " + regionState.getRegion() + ", " + + regionState); } HRegionInfo hri = regionState.getRegion(); diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestWarmupRegion.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestWarmupRegion.java index ab08ef0..7e97b69 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestWarmupRegion.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestWarmupRegion.java @@ -157,6 +157,8 @@ public class TestWarmupRegion { HRegionServer rs = TEST_UTIL.getMiniHBaseCluster().getRegionServer(serverid); byte [] destName = Bytes.toBytes(rs.getServerName().toString()); TEST_UTIL.getMiniHBaseCluster().getMaster().move(info.getEncodedNameAsBytes(), destName); + //wait region online + Thread.sleep(1000); serverid = (serverid + 1) % 2; } }