Stephen Yuan Jiang created HBASE-16016:
------------------------------------------

             Summary: AssignmentManager#waitForAssignment could have unexpected 
negative deadline
                 Key: HBASE-16016
                 URL: https://issues.apache.org/jira/browse/HBASE-16016
             Project: HBase
          Issue Type: Bug
            Reporter: Stephen Yuan Jiang
            Assignee: Stephen Yuan Jiang


AssignmentManager#waitForAssignment(HRegionInfo regionInfo) passes 
Long.MAX_VALUE deadline and intends to wait forever.  However, the deadline 
would be overflowed from AssignmentManager#waitForAssignment(final 
Collection<HRegionInfo> regionSet, final boolean waitTillAllAssigned, final int 
reassigningRegions, final long minEndTime), which would cause no wait!

{code}
  /**
   * Waits until the specified region has completed assignment.
   * <p>
   * If the region is already assigned, returns immediately.  Otherwise, method
   * blocks until the region is assigned.
   * @param regionInfo region to wait on assignment for
   * @return true if the region is assigned false otherwise.
   * @throws InterruptedException
   */
  public boolean waitForAssignment(HRegionInfo regionInfo)
      throws InterruptedException {
    ArrayList<HRegionInfo> regionSet = new ArrayList<HRegionInfo>(1);
    regionSet.add(regionInfo);
    return waitForAssignment(regionSet, true, Long.MAX_VALUE);
  }

  /**
   * Waits until the specified region has completed assignment, or the deadline 
is reached.
   */
  protected boolean waitForAssignment(final Collection<HRegionInfo> regionSet,
      final boolean waitTillAllAssigned, final int reassigningRegions,
      final long minEndTime) throws InterruptedException {
    long deadline = minEndTime + bulkPerRegionOpenTimeGuesstimate * 
(reassigningRegions + 1);  // ----> OVERFLOW
    return waitForAssignment(regionSet, waitTillAllAssigned, deadline);
  }
{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to