From 841922a1ec85c0846ebf04d87362fb81ab993161 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() --- .../apache/hadoop/hbase/master/assignment/UnassignProcedure.java | 7 +++++-- .../hadoop/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 740c7ff8824d5e6f051802a2ef494ba828b91a2e..c6b7e4b1180214c624f020af1c6be029bb8ec753 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 0a31a84b33d92e4f8fe3562dc77ff70568763d97..9d6e765c224d7bec3840e3b5137a871b17e5a1f6 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); -- 2.10.1 (Apple Git-78)