From 4217bb4b16cab18a2558fa2d18a567c05ede53d8 Mon Sep 17 00:00:00 2001 From: Pankaj Date: Wed, 12 Aug 2015 20:13:31 +0530 Subject: [PATCH] HBASE-14207, Region was hijacked and remained in transition when RS failed to open a region and later regionplan changed to new RS on retry --- .../main/java/org/apache/hadoop/hbase/master/AssignmentManager.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java index 6df721b..8e4a99b 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java @@ -2034,7 +2034,7 @@ public class AssignmentManager extends ZooKeeperListener { * @param forceNewPlan */ private void assign(RegionState state, - final boolean setOfflineInZK, final boolean forceNewPlan) { + boolean setOfflineInZK, final boolean forceNewPlan) { long startTime = EnvironmentEdgeManager.currentTimeMillis(); try { Configuration conf = server.getConfiguration(); @@ -2082,6 +2082,7 @@ public class AssignmentManager extends ZooKeeperListener { return; } if (setOfflineInZK && versionOfOfflineNode == -1) { + LOG.info("Setting node as OFFLINED in ZooKeeper for region " + region); // get the version of the znode after setting it to OFFLINE. // versionOfOfflineNode will be -1 if the znode was not set to OFFLINE versionOfOfflineNode = setOfflineInZooKeeper(currentState, plan.getDestination()); @@ -2255,8 +2256,11 @@ public class AssignmentManager extends ZooKeeperListener { // 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 + LOG.info("Region assignment plan changed from " + plan.getDestination() + " to " + + newPlan.getDestination() + " server."); currentState = regionStates.updateRegionState(region, State.OFFLINE); versionOfOfflineNode = -1; + setOfflineInZK = true; plan = newPlan; } else if(plan.getDestination().equals(newPlan.getDestination()) && previousException instanceof FailedServerException) { -- 1.9.2.msysgit.0