[ 
https://issues.apache.org/jira/browse/HBASE-4351?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13100510#comment-13100510
 ] 

Jean-Daniel Cryans commented on HBASE-4351:
-------------------------------------------

A force unassign is a different "type" of unassignment. If not forcing, we 
kindly ask the RS to close the region. If forcing, then we explicitly wipe out 
the master's knowledge of that region... which can be still be fixed later by a 
run of hbck -fix. I think the current behavior is correct, and if there's 
anything to fix it would be to skip calling 
this.assignmentManager.unassign(hri, force) altogether when force=true.

> If from Admin we try to unassign a region forcefully, though a valid region 
> name is given the master is not able to identify the region to unassign.
> ----------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-4351
>                 URL: https://issues.apache.org/jira/browse/HBASE-4351
>             Project: HBase
>          Issue Type: Bug
>         Environment: Linux
>            Reporter: ramkrishna.s.vasudevan
>            Assignee: ramkrishna.s.vasudevan
>
> The following is the problem
> Get the exact region name from UI and call
> HBaseAdmin.unassign(regionname, true).
> Here true is forceful option.
> As part of unassign api
> {code}
>   public void unassign(final byte [] regionName, final boolean force)
>   throws IOException {
>     Pair<HRegionInfo, HServerAddress> pair =
>       MetaReader.getRegion(this.catalogTracker, regionName);
>     if (pair == null) throw new 
> UnknownRegionException(Bytes.toStringBinary(regionName));
>     HRegionInfo hri = pair.getFirst();
>     if (force) this.assignmentManager.clearRegionFromTransition(hri);
>     this.assignmentManager.unassign(hri, force);
>   }
> {code}
> As part of clearRegionFromTransition()
> {code}
>     synchronized (this.regions) {
>       this.regions.remove(hri);
>       for (Set<HRegionInfo> regions : this.servers.values()) {
>         regions.remove(hri);
>       }
>     }
> {code}
> the region is also removed.  Hence when the master tries to identify the 
> region
> {code}
>       if (!regions.containsKey(region)) {
>         debugLog(region, "Attempted to unassign region " +
>           region.getRegionNameAsString() + " but it is not " +
>           "currently assigned anywhere");
>         return;
>       }
> {code}
> It is not able to identify the region.  It exists in trunk and 0.90.x also.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to