This is an automated email from the ASF dual-hosted git repository.
Gargi-jais11 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new 93a626d8c04 HDDS-15491. [DiskBalancer] Preserve datanode order in
status command output. (#10450).
93a626d8c04 is described below
commit 93a626d8c04c49b4cbdf3b84e4bdcfc875c419a7
Author: slfan1989 <[email protected]>
AuthorDate: Tue Jun 23 12:30:26 2026 +0800
HDDS-15491. [DiskBalancer] Preserve datanode order in status command
output. (#10450).
---
.../cli/datanode/DiskBalancerStatusSubcommand.java | 9 ++++++---
.../scm/cli/datanode/TestDiskBalancerSubCommands.java | 19 +++++++++++--------
2 files changed, 17 insertions(+), 11 deletions(-)
diff --git
a/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/DiskBalancerStatusSubcommand.java
b/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/DiskBalancerStatusSubcommand.java
index 5584bc0b8ae..291ff2d2d3c 100644
---
a/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/DiskBalancerStatusSubcommand.java
+++
b/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/DiskBalancerStatusSubcommand.java
@@ -24,7 +24,7 @@
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
+import java.util.Objects;
import org.apache.hadoop.hdds.cli.HddsVersionProvider;
import org.apache.hadoop.hdds.protocol.DiskBalancerProtocol;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
@@ -43,7 +43,7 @@ public class DiskBalancerStatusSubcommand extends
AbstractDiskBalancerSubCommand
// Store statuses for non-JSON mode consolidation
private final Map<String, DatanodeDiskBalancerInfoProto> statuses =
- new ConcurrentHashMap<>();
+ new LinkedHashMap<>();
@Override
protected Object executeCommand(String hostName) throws IOException {
@@ -83,7 +83,10 @@ protected void displayResults(List<String> successNodes,
List<String> failedNode
// Display consolidated status for successful nodes
if (!successNodes.isEmpty() && !statuses.isEmpty()) {
List<DatanodeDiskBalancerInfoProto> statusList =
- new ArrayList<>(statuses.values());
+ successNodes.stream()
+ .map(statuses::get)
+ .filter(Objects::nonNull)
+ .collect(toList());
System.out.println(generateStatus(statusList));
}
}
diff --git
a/hadoop-ozone/cli-admin/src/test/java/org/apache/hadoop/hdds/scm/cli/datanode/TestDiskBalancerSubCommands.java
b/hadoop-ozone/cli-admin/src/test/java/org/apache/hadoop/hdds/scm/cli/datanode/TestDiskBalancerSubCommands.java
index 1f935973468..0e5667e9ea0 100644
---
a/hadoop-ozone/cli-admin/src/test/java/org/apache/hadoop/hdds/scm/cli/datanode/TestDiskBalancerSubCommands.java
+++
b/hadoop-ozone/cli-admin/src/test/java/org/apache/hadoop/hdds/scm/cli/datanode/TestDiskBalancerSubCommands.java
@@ -513,8 +513,8 @@ public void testStatusDiskBalancerWithJson() throws
Exception {
public void testStatusDiskBalancerWithMultipleNodes() throws Exception {
DiskBalancerStatusSubcommand cmd = new DiskBalancerStatusSubcommand();
- DatanodeDiskBalancerInfoProto statusProto1 =
generateRandomStatusProto("host-1");
- DatanodeDiskBalancerInfoProto statusProto2 =
generateRandomStatusProto("host-2");
+ DatanodeDiskBalancerInfoProto statusProto1 =
generateRandomStatusProto("host-2");
+ DatanodeDiskBalancerInfoProto statusProto2 =
generateRandomStatusProto("host-1");
when(mockProtocol.getDiskBalancerInfo())
.thenReturn(statusProto1, statusProto2);
@@ -522,12 +522,14 @@ public void testStatusDiskBalancerWithMultipleNodes()
throws Exception {
try (DiskBalancerMocks mocks = setupAllMocks()) {
CommandLine c = new CommandLine(cmd);
- c.parseArgs("host-1", "host-2");
+ c.parseArgs("host-2", "host-1");
cmd.call();
String output = outContent.toString(DEFAULT_ENCODING);
- assertTrue(output.contains("host-1"));
- assertTrue(output.contains("host-2"));
+ int host2Index = output.indexOf("host-2");
+ int host1Index = output.indexOf("host-1");
+ assertThat(host2Index).isGreaterThanOrEqualTo(0);
+ assertThat(host1Index).isGreaterThan(host2Index);
}
}
@@ -571,8 +573,10 @@ public void testStatusDiskBalancerWithStdin() throws
Exception {
String output = outContent.toString(DEFAULT_ENCODING);
assertTrue(output.contains("Status result"));
- assertTrue(output.contains("host-1"));
- assertTrue(output.contains("host-2"));
+ int host1Index = output.indexOf("host-1");
+ int host2Index = output.indexOf("host-2");
+ assertThat(host1Index).isGreaterThanOrEqualTo(0);
+ assertThat(host2Index).isGreaterThan(host1Index);
}
}
@@ -909,4 +913,3 @@ private DiskBalancerConfigurationProto
createConfigProto(double threshold, long
.build();
}
}
-
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]