[
https://issues.apache.org/jira/browse/HBASE-18014?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16008903#comment-16008903
]
Andrew Purtell commented on HBASE-18014:
----------------------------------------
lgtm
Let me do some local checks and then commit
> 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)