Index: src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java (revision 1351374) +++ src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java (working copy) @@ -1588,7 +1588,17 @@ if (isDisabledorDisablingRegionInRIT(region)) { return; } - setEnabledTable(region); + // In case of assign from EnableTableHandler table state is ENABLING. Any how + // EnableTableHandler will set ENABLED after assigning all the the table regions. If we + // try to set to ENABLED directly then client api may think ENABLE table is completed. + // When we have a case like all the regions are added directly into META and we call + // assignRegion then we need to make the table ENABLED. Hence in such case the table + // will not be in ENABLING or ENABLED state. + String tableName = region.getTableNameAsString(); + if (isNotEnabledorEnablingTable(tableName)) { + LOG.debug("Setting table " + tableName + " to ENABLED state."); + setEnabledTable(region); + } } } @@ -1673,6 +1683,10 @@ } } + private boolean isNotEnabledorEnablingTable(final String tableName) { + return !zkTable.isEnablingTable(tableName) && !zkTable.isEnabledTable(tableName); + } + private boolean isDisabledorDisablingRegionInRIT(final HRegionInfo region) { String tableName = region.getTableNameAsString(); boolean disabled = this.zkTable.isDisabledTable(tableName);