Index: src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java (revision 1206995) +++ src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java (working copy) @@ -286,6 +286,23 @@ if (processDeadRegion(e.getKey(), e.getValue(), this.services.getAssignmentManager(), this.server.getCatalogTracker())) { + // Skip regions that were in transition unless CLOSING or + // PENDING_CLOSE + RegionState rit = this.services.getAssignmentManager().isRegionInTransition(e.getKey()); + if(rit!=null&&!rit.isClosing() && !rit.isPendingClose()){ + LOG.debug("Skip assgining region " + + rit.getRegion().getRegionNameAsString() + + " because in RIT region state: " + rit.getState()); + continue; + } + ServerName addressFromAM = this.services.getAssignmentManager() + .getRegionServerOfRegion(e.getKey()); + if (addressFromAM != null && !addressFromAM.equals(this.serverName)) { + LOG.debug("Skip assgining region " + + e.getKey().getRegionNameAsString() + + " because it has been opened in " + + addressFromAM.getServerName()); + } this.services.getAssignmentManager().assign(e.getKey(), true); } }