From 925c9fed3311ea1fd8f5ed1cb6b1c0abc5c90425 Mon Sep 17 00:00:00 2001 From: cnauroth Date: Wed, 21 Jan 2015 11:52:48 -0800 Subject: [PATCH] HADOOP-10668. Addendum patch to fix TestZKFailoverController. Contributed by Ming Ma. --- .../java/org/apache/hadoop/ha/MiniZKFCCluster.java | 5 +++++ .../org/apache/hadoop/ha/TestZKFailoverController.java | 10 +++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/MiniZKFCCluster.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/MiniZKFCCluster.java index cab59a48afd..5aee61166ff 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/MiniZKFCCluster.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/MiniZKFCCluster.java @@ -155,6 +155,11 @@ public class MiniZKFCCluster { /** * Wait for the given HA service to enter the given HA state. + * This is based on the state of ZKFC, not the state of HA service. + * There could be difference between the two. For example, + * When the service becomes unhealthy, ZKFC will quit ZK election and + * transition to HAServiceState.INITIALIZING and remain in that state + * until the service becomes healthy. */ public void waitForHAState(int idx, HAServiceState state) throws Exception { diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/TestZKFailoverController.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/TestZKFailoverController.java index 83a29dd11d9..d8271c5059d 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/TestZKFailoverController.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/TestZKFailoverController.java @@ -211,8 +211,8 @@ public class TestZKFailoverController extends ClientBaseWithFixes { LOG.info("Faking svc0 unhealthy, should failover to svc1"); cluster.setHealthy(0, false); - LOG.info("Waiting for svc0 to enter standby state"); - cluster.waitForHAState(0, HAServiceState.STANDBY); + LOG.info("Waiting for svc0 to enter initializing state"); + cluster.waitForHAState(0, HAServiceState.INITIALIZING); cluster.waitForHAState(1, HAServiceState.ACTIVE); LOG.info("Allowing svc0 to be healthy again, making svc1 unreachable " + @@ -332,7 +332,7 @@ public class TestZKFailoverController extends ClientBaseWithFixes { Mockito.verify(svc1.proxy, Mockito.timeout(2000).atLeastOnce()) .transitionToActive(Mockito.any()); - cluster.waitForHAState(0, HAServiceState.STANDBY); + cluster.waitForHAState(0, HAServiceState.INITIALIZING); cluster.waitForHAState(1, HAServiceState.STANDBY); LOG.info("Faking svc0 healthy again, should go back to svc0"); @@ -587,12 +587,12 @@ public class TestZKFailoverController extends ClientBaseWithFixes { // Failover by bad health cluster.setHealthy(0, false); - cluster.waitForHAState(0, HAServiceState.STANDBY); + cluster.waitForHAState(0, HAServiceState.INITIALIZING); cluster.waitForHAState(1, HAServiceState.ACTIVE); cluster.setHealthy(1, true); cluster.setHealthy(0, false); cluster.waitForHAState(1, HAServiceState.ACTIVE); - cluster.waitForHAState(0, HAServiceState.STANDBY); + cluster.waitForHAState(0, HAServiceState.INITIALIZING); cluster.setHealthy(0, true); cluster.waitForHealthState(0, State.SERVICE_HEALTHY);