Index: src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java (revision 1004519) +++ src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java (working copy) @@ -1010,6 +1010,27 @@ } /** + * Wait on regions to clean regions-in-transition. + * @param hri Region to wait on. + * @throws IOException + */ + public void waitOnRegionToClearRegionsInTransition(final HRegionInfo hri) + throws IOException { + if (isRegionInTransition(hri) == null) return; + RegionState rs = null; + // There is already a timeout monitor on regions in transition so I + // should not have to have one here too? + while(!this.master.isStopped() && (rs = isRegionInTransition(hri)) != null) { + Threads.sleep(1000); + LOG.info("Waiting on " + rs + " to clear regions-in-transition"); + } + if (this.master.isStopped()) { + LOG.info("Giving up wait on regions in " + + "transition because stoppable.isStopped is set"); + } + } + + /** * Checks if the table of the specified region has been disabled by the user. * @param regionName * @return Index: src/main/java/org/apache/hadoop/hbase/master/handler/DisableTableHandler.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/master/handler/DisableTableHandler.java (revision 1004519) +++ src/main/java/org/apache/hadoop/hbase/master/handler/DisableTableHandler.java (working copy) @@ -76,8 +76,12 @@ // TODO: Confirm we have parallel closing going on. List regions = assignmentManager.getRegionsOfTable(tableName); // Unassign the online regions - for(HRegionInfo region : regions) { + for(HRegionInfo region: regions) { assignmentManager.unassign(region); } + // Wait on table's regions to clear region in transition. + for (HRegionInfo region: regions) { + this.assignmentManager.waitOnRegionToClearRegionsInTransition(region); + } } } \ No newline at end of file Index: src/main/java/org/apache/hadoop/hbase/master/handler/EnableTableHandler.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/master/handler/EnableTableHandler.java (revision 1004519) +++ src/main/java/org/apache/hadoop/hbase/master/handler/EnableTableHandler.java (working copy) @@ -75,5 +75,9 @@ for (HRegionInfo region : regions) { assignmentManager.assign(region); } + // Wait on table's regions to clear region in transition. + for (HRegionInfo region: regions) { + this.assignmentManager.waitOnRegionToClearRegionsInTransition(region); + } } } \ No newline at end of file