You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Matteo Bertozzi (JIRA)" <ji...@apache.org> on 2016/06/13 21:08:03 UTC
[jira] [Commented] (HBASE-16016)
AssignmentManager#waitForAssignment could have unexpected negative deadline
[ https://issues.apache.org/jira/browse/HBASE-16016?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15328265#comment-15328265 ]
Matteo Bertozzi commented on HBASE-16016:
-----------------------------------------
+1
> 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
> Attachments: HBase-16016.v1-master.patch
>
>
> 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)