From 6d9a4c11a6bdbf76b8b189e0afd92c25e0aa4564 Mon Sep 17 00:00:00 2001 From: Chia-Chuan Yu Date: Sun, 23 Mar 2025 19:15:49 +0800 Subject: [PATCH 1/3] HDDS-12485. Repair tool should only print user warning for offline commands --- .../main/java/org/apache/hadoop/ozone/repair/RepairTool.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/repair/RepairTool.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/repair/RepairTool.java index e3255a4a4261..44f285a5436e 100644 --- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/repair/RepairTool.java +++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/repair/RepairTool.java @@ -53,8 +53,11 @@ protected Component serviceToBeOffline() { @Override public final Void call() throws Exception { + final Component service = serviceToBeOffline(); if (!dryRun) { - confirmUser(); + if (service == null) { // offline tool + confirmUser(); + } } if (isServiceStateOK()) { execute(); From a0195fa4a8e0d093ed78eff57c64a7d2ffdfeaee Mon Sep 17 00:00:00 2001 From: Chia-Chuan Yu Date: Sun, 23 Mar 2025 21:40:48 +0800 Subject: [PATCH 2/3] Removed unneeded tests --- .../hadoop/ozone/repair/TestOzoneRepair.java | 24 ------------------- 1 file changed, 24 deletions(-) diff --git a/hadoop-ozone/tools/src/test/java/org/apache/hadoop/ozone/repair/TestOzoneRepair.java b/hadoop-ozone/tools/src/test/java/org/apache/hadoop/ozone/repair/TestOzoneRepair.java index b43c613c7540..6afada991597 100644 --- a/hadoop-ozone/tools/src/test/java/org/apache/hadoop/ozone/repair/TestOzoneRepair.java +++ b/hadoop-ozone/tools/src/test/java/org/apache/hadoop/ozone/repair/TestOzoneRepair.java @@ -23,7 +23,6 @@ import static java.util.Collections.singletonList; import static org.assertj.core.api.Assertions.assertThat; -import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.PrintStream; import java.util.List; @@ -95,29 +94,6 @@ private static void assertSubcommandOptionRecursively(CommandLine cmd) { } } - @Test - void testOzoneRepairWhenUserIsRemindedSystemUserAndDeclinesToProceed() throws Exception { - OzoneRepair ozoneRepair = new OzoneRepair(); - System.setIn(new ByteArrayInputStream("N".getBytes(DEFAULT_ENCODING))); - - int res = ozoneRepair.execute(new String[]{"om", "fso-tree", "--db", "/dev/null"}); - assertThat(res).isNotEqualTo(CommandLine.ExitCode.OK); - assertThat(err.toString(DEFAULT_ENCODING)).contains("Aborting command."); - // prompt should contain the current user name as well - assertThat(err.toString(DEFAULT_ENCODING)).contains("ATTENTION: Running as user " + OZONE_USER); - } - - @Test - void testOzoneRepairWhenUserIsRemindedSystemUserAndAgreesToProceed() throws Exception { - OzoneRepair ozoneRepair = new OzoneRepair(); - System.setIn(new ByteArrayInputStream("y".getBytes(DEFAULT_ENCODING))); - - ozoneRepair.execute(new String[]{"om", "fso-tree", "--db", "/dev/null"}); - assertThat(out.toString(DEFAULT_ENCODING)).contains("Run as user: " + OZONE_USER); - // prompt should contain the current user name as well - assertThat(err.toString(DEFAULT_ENCODING)).contains("ATTENTION: Running as user " + OZONE_USER); - } - /** Arguments for which confirmation prompt should not be displayed. */ static List> skipPromptParams() { return asList( From aad53ab2e597c3e13f47564c7d969819881acadc Mon Sep 17 00:00:00 2001 From: Chia-Chuan Yu Date: Mon, 24 Mar 2025 19:10:31 +0800 Subject: [PATCH 3/3] Applied comments --- .../hadoop/ozone/repair/RepairTool.java | 6 ++--- .../hadoop/ozone/repair/TestOzoneRepair.java | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/repair/RepairTool.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/repair/RepairTool.java index 44f285a5436e..c6a718ee30b5 100644 --- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/repair/RepairTool.java +++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/repair/RepairTool.java @@ -54,10 +54,8 @@ protected Component serviceToBeOffline() { @Override public final Void call() throws Exception { final Component service = serviceToBeOffline(); - if (!dryRun) { - if (service == null) { // offline tool - confirmUser(); - } + if (!dryRun && service != null) { // offline tool + confirmUser(); } if (isServiceStateOK()) { execute(); diff --git a/hadoop-ozone/tools/src/test/java/org/apache/hadoop/ozone/repair/TestOzoneRepair.java b/hadoop-ozone/tools/src/test/java/org/apache/hadoop/ozone/repair/TestOzoneRepair.java index 6afada991597..b43c613c7540 100644 --- a/hadoop-ozone/tools/src/test/java/org/apache/hadoop/ozone/repair/TestOzoneRepair.java +++ b/hadoop-ozone/tools/src/test/java/org/apache/hadoop/ozone/repair/TestOzoneRepair.java @@ -23,6 +23,7 @@ import static java.util.Collections.singletonList; import static org.assertj.core.api.Assertions.assertThat; +import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.PrintStream; import java.util.List; @@ -94,6 +95,29 @@ private static void assertSubcommandOptionRecursively(CommandLine cmd) { } } + @Test + void testOzoneRepairWhenUserIsRemindedSystemUserAndDeclinesToProceed() throws Exception { + OzoneRepair ozoneRepair = new OzoneRepair(); + System.setIn(new ByteArrayInputStream("N".getBytes(DEFAULT_ENCODING))); + + int res = ozoneRepair.execute(new String[]{"om", "fso-tree", "--db", "/dev/null"}); + assertThat(res).isNotEqualTo(CommandLine.ExitCode.OK); + assertThat(err.toString(DEFAULT_ENCODING)).contains("Aborting command."); + // prompt should contain the current user name as well + assertThat(err.toString(DEFAULT_ENCODING)).contains("ATTENTION: Running as user " + OZONE_USER); + } + + @Test + void testOzoneRepairWhenUserIsRemindedSystemUserAndAgreesToProceed() throws Exception { + OzoneRepair ozoneRepair = new OzoneRepair(); + System.setIn(new ByteArrayInputStream("y".getBytes(DEFAULT_ENCODING))); + + ozoneRepair.execute(new String[]{"om", "fso-tree", "--db", "/dev/null"}); + assertThat(out.toString(DEFAULT_ENCODING)).contains("Run as user: " + OZONE_USER); + // prompt should contain the current user name as well + assertThat(err.toString(DEFAULT_ENCODING)).contains("ATTENTION: Running as user " + OZONE_USER); + } + /** Arguments for which confirmation prompt should not be displayed. */ static List> skipPromptParams() { return asList(