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]

Reply via email to