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)