Punt on the timeout doesn't work in BulkEnabler#waitUntilDone (master's
EnableTableHandler)
--------------------------------------------------------------------------------------------
Key: HBASE-5425
URL: https://issues.apache.org/jira/browse/HBASE-5425
Project: HBase
Issue Type: Bug
Components: master
Affects Versions: 0.92.0, 0.90.5
Reporter: terry zhang
please take a look at the code below in EnableTableHandler(hbase master):
{code:title=EnableTableHandler.java|borderStyle=solid}
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;
}
{code}
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.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira