Description
please take a look at the code below in EnableTableHandler(hbase master):
EnableTableHandler.java
protected boolean waitUntilDone(long timeout) throws InterruptedException { ..... int lastNumberOfRegions = this.countOfRegionsInTable; while (!server.isStopped() && remaining > 0) { Thread.sleep(waitingTimeForEvents); regions = assignmentManager.getRegionsOfTable(tableName); if (isDone(regions)) break; // Punt on the timeout as long we make progress if (regions.size() > lastNumberOfRegions) { lastNumberOfRegions = regions.size(); timeout += waitingTimeForEvents; } remaining = timeout - (System.currentTimeMillis() - startTime); .... } private boolean isDone(final List<HRegionInfo> regions) { return regions != null && regions.size() >= this.countOfRegionsInTable; }
We can easily find out if we let lastNumberOfRegions = this.countOfRegionsInTable , the function of punt on timeout code will never be executed. I think initlize lastNumberOfRegions = 0 can make it work.