HDFS-14067. [SBN read] Allow manual failover between standby and observer. Contributed by Chao Sun.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/cbc2f932 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/cbc2f932 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/cbc2f932 Branch: refs/heads/trunk Commit: cbc2f932eb3caeacd4b22f0ca964f60426becdee Parents: a3aab48 Author: Chao Sun <[email protected]> Authored: Sat Nov 24 13:55:43 2018 -0800 Committer: Konstantin V Shvachko <[email protected]> Committed: Mon Dec 24 09:34:01 2018 -0800 ---------------------------------------------------------------------- .../src/main/java/org/apache/hadoop/ha/HAAdmin.java | 1 + .../org/apache/hadoop/hdfs/tools/TestDFSHAAdmin.java | 13 +++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/cbc2f932/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ha/HAAdmin.java ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ha/HAAdmin.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ha/HAAdmin.java index 0573d83..0693dce 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ha/HAAdmin.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ha/HAAdmin.java @@ -476,6 +476,7 @@ public abstract class HAAdmin extends Configured implements Tool { // Mutative commands take FORCEMANUAL option if ("-transitionToActive".equals(cmd) || "-transitionToStandby".equals(cmd) || + "-transitionToObserver".equals(cmd) || "-failover".equals(cmd)) { opts.addOption(FORCEMANUAL, false, "force manual control even if auto-failover is enabled"); http://git-wip-us.apache.org/repos/asf/hadoop/blob/cbc2f932/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/TestDFSHAAdmin.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/TestDFSHAAdmin.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/TestDFSHAAdmin.java index dda6f6c..db827bf 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/TestDFSHAAdmin.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/TestDFSHAAdmin.java @@ -216,11 +216,16 @@ public class TestDFSHAAdmin { assertTrue(errOutput.contains("Refusing to manually manage")); assertEquals(-1, runTool("-transitionToStandby", "nn1")); assertTrue(errOutput.contains("Refusing to manually manage")); + assertEquals(-1, runTool("-transitionToObserver", "nn1")); + assertTrue(errOutput.contains("Refusing to manually manage")); Mockito.verify(mockProtocol, Mockito.never()) .transitionToActive(anyReqInfo()); Mockito.verify(mockProtocol, Mockito.never()) - .transitionToStandby(anyReqInfo()); + .transitionToStandby(anyReqInfo()); + Mockito.verify(mockProtocol, Mockito.never()) + .transitionToObserver(anyReqInfo()); + // Force flag should bypass the check and change the request source // for the RPC @@ -228,12 +233,16 @@ public class TestDFSHAAdmin { assertEquals(0, runTool("-transitionToActive", "-forcemanual", "nn1")); setupConfirmationOnSystemIn(); assertEquals(0, runTool("-transitionToStandby", "-forcemanual", "nn1")); + setupConfirmationOnSystemIn(); + assertEquals(0, runTool("-transitionToObserver", "-forcemanual", "nn1")); Mockito.verify(mockProtocol, Mockito.times(1)).transitionToActive( reqInfoCaptor.capture()); Mockito.verify(mockProtocol, Mockito.times(1)).transitionToStandby( reqInfoCaptor.capture()); - + Mockito.verify(mockProtocol, Mockito.times(1)).transitionToObserver( + reqInfoCaptor.capture()); + // All of the RPCs should have had the "force" source for (StateChangeRequestInfo ri : reqInfoCaptor.getAllValues()) { assertEquals(RequestSource.REQUEST_BY_USER_FORCED, ri.getSource()); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
