This is an automated email from the ASF dual-hosted git repository.

sodonnell 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 537bac8887 HDDS-7176. Sort the container replica according to the 
replica index (#3720)
537bac8887 is described below

commit 537bac88875f5f4b5fd47476aea105059dccbc76
Author: Nibiru <[email protected]>
AuthorDate: Wed Aug 31 03:01:37 2022 +0800

    HDDS-7176. Sort the container replica according to the replica index (#3720)
---
 .../hdds/scm/cli/container/InfoSubcommand.java     |  6 ++++--
 .../hdds/scm/cli/container/TestInfoSubCommand.java | 22 +++++++++++++++++++++-
 2 files changed, 25 insertions(+), 3 deletions(-)

diff --git 
a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/InfoSubcommand.java
 
b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/InfoSubcommand.java
index 25ed0e5df5..7f5f48fea1 100644
--- 
a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/InfoSubcommand.java
+++ 
b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/container/InfoSubcommand.java
@@ -18,6 +18,7 @@
 package org.apache.hadoop.hdds.scm.cli.container;
 
 import java.io.IOException;
+import java.util.Comparator;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -104,8 +105,9 @@ public class InfoSubcommand extends ScmSubcommand {
 
       // Print the replica details if available
       if (replicas != null) {
-        String replicaStr = replicas.stream().map(
-            InfoSubcommand::buildReplicaDetails)
+        String replicaStr = replicas.stream()
+            
.sorted(Comparator.comparing(ContainerReplicaInfo::getReplicaIndex))
+            .map(InfoSubcommand::buildReplicaDetails)
             .collect(Collectors.joining(",\n"));
         LOG.info("Replicas: [{}]", replicaStr);
       }
diff --git 
a/hadoop-hdds/tools/src/test/java/org/apache/hadoop/hdds/scm/cli/container/TestInfoSubCommand.java
 
b/hadoop-hdds/tools/src/test/java/org/apache/hadoop/hdds/scm/cli/container/TestInfoSubCommand.java
index 6e605c8c79..128708c44a 100644
--- 
a/hadoop-hdds/tools/src/test/java/org/apache/hadoop/hdds/scm/cli/container/TestInfoSubCommand.java
+++ 
b/hadoop-hdds/tools/src/test/java/org/apache/hadoop/hdds/scm/cli/container/TestInfoSubCommand.java
@@ -114,6 +114,16 @@ public class TestInfoSubCommand {
       Matcher matcher = pattern.matcher(replica.get(0).getRenderedMessage());
       Assertions.assertTrue(matcher.matches());
     }
+    // Ensure the replicaIndex output is in order
+    if (includeIndex) {
+      List<Integer> indexList = new ArrayList<>();
+      for (int i = 1; i < datanodes.size() + 1; i++) {
+        String temp = "ReplicaIndex: " + i;
+        indexList.add(replica.get(0).getRenderedMessage().indexOf(temp));
+      }
+      Assertions.assertEquals(datanodes.size(), indexList.size());
+      Assertions.assertTrue(inSort(indexList));
+    }
     // Ensure ReplicaIndex is not mentioned as it was not passed in the proto:
     Pattern pattern = Pattern.compile(".*ReplicaIndex.*",
         Pattern.DOTALL);
@@ -181,6 +191,15 @@ public class TestInfoSubCommand {
     testJsonOutput();
   }
 
+  private static boolean inSort(List<Integer> list) {
+    for (int i = 0; i < list.size(); i++) {
+      if (list.indexOf(i) > list.indexOf(i + 1)) {
+        return false;
+      }
+    }
+    return true;
+  }
+
   private void testJsonOutput() throws IOException {
     cmd = new InfoSubcommand();
     CommandLine c = new CommandLine(cmd);
@@ -208,6 +227,7 @@ public class TestInfoSubCommand {
 
   private List<ContainerReplicaInfo> getReplicas(boolean includeIndex) {
     List<ContainerReplicaInfo> replicas = new ArrayList<>();
+    int index = 1;
     for (DatanodeDetails dn : datanodes) {
       ContainerReplicaInfo.Builder container
           = new ContainerReplicaInfo.Builder()
@@ -219,7 +239,7 @@ public class TestInfoSubCommand {
           .setKeyCount(1)
           .setSequenceId(1);
       if (includeIndex) {
-        container.setReplicaIndex(4);
+        container.setReplicaIndex(index++);
       }
       replicas.add(container.build());
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to