From 52671659d2de239102143eb05280527174e5fefa Mon Sep 17 00:00:00 2001 From: Pankaj Date: Thu, 13 Aug 2015 22:05:36 +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 --- .../java/org/apache/hadoop/hbase/master/AssignmentManager.java | 8 +++++++- 1 file changed, 7 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..ff90f50 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,13 @@ 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; + if (useZKForAssignment) { + setOfflineInZK = true; + } plan = newPlan; } else if(plan.getDestination().equals(newPlan.getDestination()) && previousException instanceof FailedServerException) { -- 1.9.2.msysgit.0