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

Hudson commented on HBASE-18014:
--------------------------------

SUCCESS: Integrated in Jenkins build HBase-1.4 #734 (See 
[https://builds.apache.org/job/HBase-1.4/734/])
HBASE-18014 A case of Region remain unassigned when table enabled (Allan 
(apurtell: rev 0a4528225c71cf515b69ab194779107d24de9852)
* (edit) 
hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
* (edit) 
hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin2.java


> A case of Region remain unassigned when table enabled
> -----------------------------------------------------
>
>                 Key: HBASE-18014
>                 URL: https://issues.apache.org/jira/browse/HBASE-18014
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 1.4.0, 1.1.10
>            Reporter: Allan Yang
>            Assignee: Allan Yang
>             Fix For: 1.4.0, 1.3.2
>
>         Attachments: HBASE-18014-branch-1.patch, HBASE-18014-branch-1.v2.patch
>
>
> Reproduce procedure:
> 1. Create a table, say the regions of this table are opened on RS1
> 2. Disable this table
> 3. Abort RS1 and wait for SSH to complete
> 4. Wait for a while, RS1 will be deleted from processedServers(a HashMap in 
> {{RegionState}} to store processed dead servers)
> 5. Enable the table, then the region of the table will remain unassigned 
> until master restarts.
> Why?
> When assigning regions after the table enabled, AssignmentManager will check 
> whether those regions are on servers which are dead but not processed, since 
> RS1 already have deleted from the map of 'processedServers'. Then the 
> AssignmentManager think this region is on a dead but not processed server. So 
> it will skip assign, let the region be handled by SSH.
> {code:java}
> case OFFLINE:
>       if (useZKForAssignment
>           && regionStates.isServerDeadAndNotProcessed(sn)
>           && wasRegionOnDeadServerByMeta(region, sn)) {
>         if (!regionStates.isRegionInTransition(region)) {
>           LOG.info("Updating the state to " + State.OFFLINE + " to allow to 
> be reassigned by SSH");
>           regionStates.updateRegionState(region, State.OFFLINE);
>         }
>         LOG.info("Skip assigning " + region.getRegionNameAsString()
>             + ", it is on a dead but not processed yet server: " + sn);
>         return null;
>       }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to