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

        

Reply via email to