You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "Allan Yang (JIRA)" <ji...@apache.org> on 2017/05/08 13:17:04 UTC
[jira] [Created] (HBASE-18014) A case of Region remain unassigned
when table enabled
Allan Yang created HBASE-18014:
----------------------------------
Summary: 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.1.10, 1.4.0
Reporter: Allan Yang
Assignee: Allan Yang
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)