From 3f540f3801c93813a3a018dddb7fdf24d4aff27d Mon Sep 17 00:00:00 2001 From: Umesh Agashe Date: Tue, 1 Aug 2017 12:36:47 -0700 Subject: [PATCH] HBASE-18491 [AMv2] Fail UnassignProcedure if source Region Server is not online. The patch also enables TestServerCrashProcedure.testRecoveryAndDoubleExecutionOnRsWithMeta() Signed-off-by: Michael Stack --- .../hadoop/hbase/master/assignment/UnassignProcedure.java | 7 +++++-- .../hbase/master/procedure/TestServerCrashProcedure.java | 1 - 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.java index 740c7ff8824..c6b7e4b1180 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/UnassignProcedure.java @@ -161,9 +161,12 @@ public class UnassignProcedure extends RegionTransitionProcedure { return false; } - // if the server is down, mark the operation as complete + // if the server is down, mark the operation as failed. region cannot be unassigned + // if server is down if (serverCrashed.get() || !isServerOnline(env, regionNode)) { - LOG.info("Server already down: " + this + "; " + regionNode.toShortString()); + LOG.warn("Server already down: " + this + "; " + regionNode.toShortString()); + setFailure("source region server not online", + new ServerCrashException(getProcId(), regionNode.getRegionLocation())); return false; } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.java index 0a31a84b33d..9d6e765c224 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.java @@ -87,7 +87,6 @@ public class TestServerCrashProcedure { testRecoveryAndDoubleExecution(false, false); } - @Ignore // HBASE-18366... To be enabled again. @Test(timeout=60000) public void testRecoveryAndDoubleExecutionOnRsWithMeta() throws Exception { testRecoveryAndDoubleExecution(true, true);