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