Details
Description
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!
/** * 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); }