diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java index cfbeafc..15db389 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java @@ -3239,6 +3239,9 @@ public class AssignmentManager extends ZooKeeperListener { for (RegionState region : this.regionsInTransition.copyValues()) { if (deadRegions.remove(region.getRegion())) { rits.add(region); + } else if (region.isOpening() && region.getServerName() != null && + sn.equals(region.getServerName())) { + rits.add(region); } } return rits; diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java index 00f0407..71fe515 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java @@ -269,7 +269,7 @@ public class ServerShutdownHandler extends EventHandler { // Skip regions that were in transition unless CLOSING or PENDING_CLOSE for (RegionState rit : regionsInTransition) { - if (!rit.isClosing() && !rit.isPendingClose() && !rit.isSplitting()) { + if (!rit.isClosing() && !rit.isPendingClose() && !rit.isSplitting() && !rit.isOpening()) { LOG.debug("Removed " + rit.getRegion().getRegionNameAsString() + " from list of regions to assign because in RIT; region state: " + rit.getState()); @@ -294,7 +294,7 @@ public class ServerShutdownHandler extends EventHandler { this.server.getCatalogTracker())) { ServerName addressFromAM = this.services.getAssignmentManager() .getRegionServerOfRegion(e.getKey()); - if (rit != null && !rit.isClosing() && !rit.isPendingClose() && !rit.isSplitting()) { + if (rit != null && !rit.isClosing() && !rit.isPendingClose() && !rit.isSplitting() && !rit.isOpening()) { // Skip regions that were in transition unless CLOSING or // PENDING_CLOSE LOG.info("Skip assigning region " + rit.toString());