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)