hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Allan Yang (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-18014) A case of Region remain unassigned when table enabled
Date Tue, 09 May 2017 05:10:04 GMT

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

Allan Yang commented on HBASE-18014:
------------------------------------

Failed UT are passed locally, issues in Findbugs are not introduced by my code.

> 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
>         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)

Mime
View raw message