Pankaj Kumar created HBASE-14207:
------------------------------------
Summary: Region was hijacked and remained in transition when RS
failed to open a region and later regionplan changed to new RS on retry
Key: HBASE-14207
URL: https://issues.apache.org/jira/browse/HBASE-14207
Project: HBase
Issue Type: Bug
Components: master
Reporter: Pankaj Kumar
Assignee: Pankaj Kumar
On production environment, following events happened
1. Master is trying to assign a region to RS, but due to
KeeperException$SessionExpiredException RS failed to open the region.
In RS log, saw multiple WARN log related to
KeeperException$SessionExpiredException
> KeeperErrorCode = Session expired for
/hbase/region-in-transition/08f1935d652e5dbdac09b423b8f9401b
> Unable to get data of znode
/hbase/region-in-transition/08f1935d652e5dbdac09b423b8f9401b
2. Master retried to assign the region to same RS, but RS again failed.
3. On second retry new plan formed and this time plan destination (RS) is
different, so master send the request to new RS to open the region. But new RS
failed to open the region as there was server mismatch in ZNODE than the
expected current server name.
Logs Snippet:
{noformat}
HM
2015-07-14 03:50:29,759 | INFO | master:T101PC03VM13:21300 | Processing
08f1935d652e5dbdac09b423b8f9401b in state: M_ZK_REGION_OFFLINE |
org.apache.hadoop.hbase.master.AssignmentManager.processRegionsInTransition(AssignmentManager.java:644)
2015-07-14 03:50:29,759 | INFO | master:T101PC03VM13:21300 | Transitioned
{08f1935d652e5dbdac09b423b8f9401b state=OFFLINE, ts=1436817029679, server=null}
to {08f1935d652e5dbdac09b423b8f9401b state=PENDING_OPEN, ts=1436817029759,
server=T101PC03VM13,21302,1436816690692} |
org.apache.hadoop.hbase.master.RegionStates.updateRegionState(RegionStates.java:327)
2015-07-14 03:50:29,760 | INFO | master:T101PC03VM13:21300 | Processed region
08f1935d652e5dbdac09b423b8f9401b in state M_ZK_REGION_OFFLINE, on server:
T101PC03VM13,21302,1436816690692 |
org.apache.hadoop.hbase.master.AssignmentManager.processRegionsInTransition(AssignmentManager.java:768)
2015-07-14 03:50:29,800 | INFO | MASTER_SERVER_OPERATIONS-T101PC03VM13:21300-3
| Assigning
INTER_CONCURRENCY_SETTING,,1436596137981.08f1935d652e5dbdac09b423b8f9401b. to
T101PC03VM13,21302,1436816690692 |
org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:1983)
2015-07-14 03:50:29,801 | WARN | MASTER_SERVER_OPERATIONS-T101PC03VM13:21300-3
| Failed assignment of
INTER_CONCURRENCY_SETTING,,1436596137981.08f1935d652e5dbdac09b423b8f9401b. to
T101PC03VM13,21302,1436816690692, trying to assign elsewhere instead; try=1 of
10 |
org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:2077)
2015-07-14 03:50:29,802 | INFO | MASTER_SERVER_OPERATIONS-T101PC03VM13:21300-3
| Trying to re-assign
INTER_CONCURRENCY_SETTING,,1436596137981.08f1935d652e5dbdac09b423b8f9401b. to
the same failed server. |
org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:2123)
2015-07-14 03:50:31,804 | INFO | MASTER_SERVER_OPERATIONS-T101PC03VM13:21300-3
| Assigning
INTER_CONCURRENCY_SETTING,,1436596137981.08f1935d652e5dbdac09b423b8f9401b. to
T101PC03VM13,21302,1436816690692 |
org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:1983)
2015-07-14 03:50:31,806 | WARN | MASTER_SERVER_OPERATIONS-T101PC03VM13:21300-3
| Failed assignment of
INTER_CONCURRENCY_SETTING,,1436596137981.08f1935d652e5dbdac09b423b8f9401b. to
T101PC03VM13,21302,1436816690692, trying to assign elsewhere instead; try=2 of
10 |
org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:2077)
2015-07-14 03:50:31,807 | INFO | MASTER_SERVER_OPERATIONS-T101PC03VM13:21300-3
| Transitioned {08f1935d652e5dbdac09b423b8f9401b state=PENDING_OPEN,
ts=1436817031804, server=T101PC03VM13,21302,1436816690692} to
{08f1935d652e5dbdac09b423b8f9401b state=OFFLINE, ts=1436817031807,
server=T101PC03VM13,21302,1436816690692} |
org.apache.hadoop.hbase.master.RegionStates.updateRegionState(RegionStates.java:327)
2015-07-14 03:50:31,807 | INFO | MASTER_SERVER_OPERATIONS-T101PC03VM13:21300-3
| Assigning
INTER_CONCURRENCY_SETTING,,1436596137981.08f1935d652e5dbdac09b423b8f9401b. to
T101PC03VM14,21302,1436816997967 |
org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:1983)
2015-07-14 03:50:31,807 | INFO | MASTER_SERVER_OPERATIONS-T101PC03VM13:21300-3
| Transitioned {08f1935d652e5dbdac09b423b8f9401b state=OFFLINE,
ts=1436817031807, server=T101PC03VM13,21302,1436816690692} to
{08f1935d652e5dbdac09b423b8f9401b state=PENDING_OPEN, ts=1436817031807,
server=T101PC03VM14,21302,1436816997967} |
org.apache.hadoop.hbase.master.RegionStates.updateRegionState(RegionStates.java:327)
2015-07-14 03:51:09,501 | INFO | MASTER_SERVER_OPERATIONS-T101PC03VM13:21300-4
| Skip assigning region in transition on other
server{08f1935d652e5dbdac09b423b8f9401b state=PENDING_OPEN, ts=1436817031807,
server=T101PC03VM14,21302,1436816997967} |
org.apache.hadoop.hbase.master.handler.ServerShutdownHandler.process(ServerShutdownHandler.java:250)
{noformat}
{noformat}
RS - T101PC03VM14
2015-07-14 03:50:31,809 | INFO |
PriorityRpcServer.handler=2,queue=0,port=21302 | Open
INTER_CONCURRENCY_SETTING,,1436596137981.08f1935d652e5dbdac09b423b8f9401b. |
org.apache.hadoop.hbase.regionserver.HRegionServer.openRegion(HRegionServer.java:3671)
2015-07-14 03:50:31,830 | WARN | RS_OPEN_REGION-T101PC03VM14:21302-2 |
regionserver:21302-0xe4e88f6f1b70002,
quorum=t101pc03vm12:24002,t101pc03vm13:24002,t101pc03vm14:24002,
baseZNode=/hbase Attempt to transition the unassigned node for
08f1935d652e5dbdac09b423b8f9401b from M_ZK_REGION_OFFLINE to
RS_ZK_REGION_OPENING failed, the server that tried to transition was
T101PC03VM14,21302,1436816997967 not the expected
T101PC03VM13,21302,1436816690692 |
org.apache.hadoop.hbase.zookeeper.ZKAssign.transitionNode(ZKAssign.java:875)
2015-07-14 03:50:31,830 | WARN | RS_OPEN_REGION-T101PC03VM14:21302-2 | Failed
transition from OFFLINE to OPENING for region=08f1935d652e5dbdac09b423b8f9401b
|
org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.transitionZookeeperOfflineToOpening(OpenRegionHandler.java:539)
2015-07-14 03:50:31,831 | WARN | RS_OPEN_REGION-T101PC03VM14:21302-2 | Region
was hijacked? Opening cancelled for
encodedName=08f1935d652e5dbdac09b423b8f9401b |
org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.process(OpenRegionHandler.java:132)
2015-07-14 03:50:31,831 | INFO | RS_OPEN_REGION-T101PC03VM14:21302-2 | Opening
of region {ENCODED => 08f1935d652e5dbdac09b423b8f9401b, NAME =>
'INTER_CONCURRENCY_SETTING,,1436596137981.08f1935d652e5dbdac09b423b8f9401b.',
STARTKEY => '', ENDKEY => '200'} failed, transitioning from OFFLINE to
FAILED_OPEN in ZK, expecting version -1 |
org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.tryTransitionFromOfflineToFailedOpen(OpenRegionHandler.java:436)
2015-07-14 03:50:31,834 | WARN | RS_OPEN_REGION-T101PC03VM14:21302-2 |
regionserver:21302-0xe4e88f6f1b70002,
quorum=t101pc03vm12:24002,t101pc03vm13:24002,t101pc03vm14:24002,
baseZNode=/hbase Attempt to transition the unassigned node for
08f1935d652e5dbdac09b423b8f9401b from M_ZK_REGION_OFFLINE to
RS_ZK_REGION_FAILED_OPEN failed, the server that tried to transition was
T101PC03VM14,21302,1436816997967 not the expected
T101PC03VM13,21302,1436816690692 |
org.apache.hadoop.hbase.zookeeper.ZKAssign.transitionNode(ZKAssign.java:875)
2015-07-14 03:50:31,834 | WARN | RS_OPEN_REGION-T101PC03VM14:21302-2 | Unable
to mark region {ENCODED => 08f1935d652e5dbdac09b423b8f9401b, NAME =>
'INTER_CONCURRENCY_SETTING,,1436596137981.08f1935d652e5dbdac09b423b8f9401b.',
STARTKEY => '', ENDKEY => '200'} as FAILED_OPEN. It's likely that the master
already timed out this open attempt, and thus another RS already has the
region. |
org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.tryTransitionFromOfflineToFailedOpen(OpenRegionHandler.java:444)
{noformat}
Since ZNODE was not modified with new destination server detail, so RS failed
to open it.
On Plan change we should set true to 'setOfflineInZK', so that ZNODE will be
modified with new destination server detail after resetting
'versionOfOfflineNode' to -1.
{code}
if (plan != newPlan &&
!plan.getDestination().equals(newPlan.getDestination())) {
// Clean out plan we failed execute and one that doesn't look like
it'll
// succeed anyways; we need a new plan!
// Transition back to OFFLINE
currentState = regionStates.updateRegionState(region,
State.OFFLINE);
versionOfOfflineNode = -1;
plan = newPlan;
}
{code}
Please correct me if I am wrong.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)