Index: src/main/java/org/apache/hadoop/hbase/master/HMaster.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/master/HMaster.java (revision 1033237) +++ src/main/java/org/apache/hadoop/hbase/master/HMaster.java (working copy) @@ -513,8 +513,11 @@ conf.getInt("hbase.master.executor.serverops.threads", 3)); this.executorService.startExecutorService(ExecutorType.MASTER_META_SERVER_OPERATIONS, conf.getInt("hbase.master.executor.serverops.threads", 2)); + // We depend on there being only one instance of this executor running + // at a time. To do concurrency, would need fencing of enable/disable of + // tables. this.executorService.startExecutorService(ExecutorType.MASTER_TABLE_OPERATIONS, - conf.getInt("hbase.master.executor.tableops.threads", 3)); + conf.getInt("hbase.master.executor.tableops.threads", 1)); // Put up info server. int port = this.conf.getInt("hbase.master.info.port", 60010); Index: src/main/java/org/apache/hadoop/hbase/master/handler/ClosedRegionHandler.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/master/handler/ClosedRegionHandler.java (revision 1033237) +++ src/main/java/org/apache/hadoop/hbase/master/handler/ClosedRegionHandler.java (working copy) @@ -83,7 +83,7 @@ LOG.debug("Handling CLOSED event for " + regionInfo.getEncodedName()); // Check if this table is being disabled or not if (this.assignmentManager.getZKTable(). - isDisabledTable(this.regionInfo.getTableDesc().getNameAsString())) { + isDisablingOrDisabledTable(this.regionInfo.getTableDesc().getNameAsString())) { assignmentManager.offlineDisabledRegion(regionInfo); return; } Index: src/main/java/org/apache/hadoop/hbase/master/handler/OpenedRegionHandler.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/master/handler/OpenedRegionHandler.java (revision 1033237) +++ src/main/java/org/apache/hadoop/hbase/master/handler/OpenedRegionHandler.java (working copy) @@ -92,7 +92,7 @@ regionInfo.getEncodedName() + ")", e); } this.assignmentManager.regionOnline(regionInfo, serverInfo); - if (this.assignmentManager.getZKTable().isDisabledTable( + if (this.assignmentManager.getZKTable().isDisablingOrDisabledTable( regionInfo.getTableDesc().getNameAsString())) { LOG.debug("Opened region " + regionInfo.getRegionNameAsString() + " but " + "this table is disabled, triggering close of region");