Index: src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java (revision 674) +++ src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java (working copy) @@ -2501,6 +2501,16 @@ enableTableIfNotDisabledOrDisablingOrEnabling(disabled, disablingOrEnabling, tableName); } else { + // If region is in offline and split state check the ZKNode + if (regionInfo.isOffline() && regionInfo.isSplit()) { + String node = ZKAssign.getNodeName(this.watcher, regionInfo.getEncodedName()); + Stat stat = new Stat(); + byte[] data = ZKUtil.getDataNoWatch(this.watcher, node, stat); + // If Znode not exists dont consider this region + if(data == null){ + continue; + } + } // Region is being served and on an active server // add only if region not in disabled and enabling table if (false == checkIfRegionBelongsToDisabled(regionInfo) Index: src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java (revision 674) +++ src/main/java/org/apache/hadoop/hbase/master/handler/ServerShutdownHandler.java (working copy) @@ -266,7 +266,7 @@ // Skip regions that were in transition unless CLOSING or PENDING_CLOSE for (RegionState rit : regionsInTransition) { - if (!rit.isClosing() && !rit.isPendingClose()) { + if (!rit.isClosing() && !rit.isPendingClose() && !rit.isSplitting()) { LOG.debug("Removed " + rit.getRegion().getRegionNameAsString() + " from list of regions to assign because in RIT; region state: " + rit.getState());