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

sodonnell pushed a commit to branch HDDS-3816-ec
in repository https://gitbox.apache.org/repos/asf/ozone.git


The following commit(s) were added to refs/heads/HDDS-3816-ec by this push:
     new 550eadc  HDDS-6308. EC: Handle Replication Factor to consider EC 
Config in Recon UI (#3078)
550eadc is described below

commit 550eadc9704dcc6abf9abbca6227f1d1eb1c758e
Author: Uma Maheswara Rao G <[email protected]>
AuthorDate: Thu Feb 17 07:40:54 2022 -0800

    HDDS-6308. EC: Handle Replication Factor to consider EC Config in Recon UI 
(#3078)
---
 .../hadoop/hdds/client/ECReplicationConfig.java    | 10 ++++++++
 .../hadoop/hdds/client/RatisReplicationConfig.java |  5 ++++
 .../hadoop/hdds/client/ReplicationConfig.java      |  5 ++++
 .../hdds/client/StandaloneReplicationConfig.java   |  5 ++++
 .../hadoop/hdds/client/TestReplicationConfig.java  | 29 ++++++++++++++++++++++
 .../hadoop/ozone/recon/api/PipelineEndpoint.java   |  5 +---
 .../ozone/recon/api/types/DatanodePipeline.java    | 14 ++++++-----
 .../ozone/recon/api/types/PipelineMetadata.java    | 19 +++++++-------
 .../src/views/datanodes/datanodes.tsx              |  2 +-
 .../src/views/pipelines/pipelines.tsx              |  2 +-
 .../hadoop/ozone/recon/api/TestEndpoints.java      |  7 +++---
 11 files changed, 77 insertions(+), 26 deletions(-)

diff --git 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/client/ECReplicationConfig.java
 
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/client/ECReplicationConfig.java
index e48db41..5459674 100644
--- 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/client/ECReplicationConfig.java
+++ 
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/client/ECReplicationConfig.java
@@ -31,6 +31,8 @@ import java.util.stream.Collectors;
  */
 public class ECReplicationConfig implements ReplicationConfig {
 
+  public static final String EC_REPLICATION_PARAMS_DELIMITER = "-";
+
   /**
    * Enum defining the allowed list of ECCodecs.
    */
@@ -141,6 +143,14 @@ public class ECReplicationConfig implements 
ReplicationConfig {
     return data + parity;
   }
 
+  @Override
+  public String getReplication() {
+    return getCodec() + EC_REPLICATION_PARAMS_DELIMITER
+        + getData() + EC_REPLICATION_PARAMS_DELIMITER
+        + getParity() + EC_REPLICATION_PARAMS_DELIMITER
+        + getEcChunkSize();
+  }
+
   public HddsProtos.ECReplicationConfig toProto() {
     return HddsProtos.ECReplicationConfig.newBuilder()
         .setData(data)
diff --git 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/client/RatisReplicationConfig.java
 
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/client/RatisReplicationConfig.java
index 43f5eba..c9e162d 100644
--- 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/client/RatisReplicationConfig.java
+++ 
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/client/RatisReplicationConfig.java
@@ -62,6 +62,11 @@ public class RatisReplicationConfig implements 
ReplicatedReplicationConfig {
   }
 
   @Override
+  public String getReplication() {
+    return String.valueOf(replicationFactor);
+  }
+
+  @Override
   public boolean equals(Object o) {
     if (this == o) {
       return true;
diff --git 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/client/ReplicationConfig.java
 
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/client/ReplicationConfig.java
index c031ed6..9efb5ec 100644
--- 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/client/ReplicationConfig.java
+++ 
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/client/ReplicationConfig.java
@@ -195,4 +195,9 @@ public interface ReplicationConfig {
    */
   int getRequiredNodes();
 
+  /**
+   * Returns the replication option in string format.
+   */
+  String getReplication();
+
 }
diff --git 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/client/StandaloneReplicationConfig.java
 
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/client/StandaloneReplicationConfig.java
index 840ba18..4cf111d 100644
--- 
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/client/StandaloneReplicationConfig.java
+++ 
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/client/StandaloneReplicationConfig.java
@@ -48,6 +48,11 @@ public class StandaloneReplicationConfig implements
   }
 
   @Override
+  public String getReplication() {
+    return String.valueOf(this.replicationFactor);
+  }
+
+  @Override
   public ReplicationType getReplicationType() {
     return ReplicationType.STAND_ALONE;
   }
diff --git 
a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/client/TestReplicationConfig.java
 
b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/client/TestReplicationConfig.java
index 7346616..ed8c8f7 100644
--- 
a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/client/TestReplicationConfig.java
+++ 
b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/client/TestReplicationConfig.java
@@ -23,6 +23,7 @@ import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
 import org.apache.hadoop.hdds.protocol.proto.HddsProtos.ReplicationFactor;
 import org.apache.hadoop.hdds.protocol.proto.HddsProtos.ReplicationType;
+import org.junit.Assert;
 import org.junit.Assume;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -160,6 +161,34 @@ public class TestReplicationConfig {
   }
 
   @Test
+  public void testECReplicationConfigGetReplication() {
+    assumeECType();
+    HddsProtos.ECReplicationConfig proto =
+        HddsProtos.ECReplicationConfig.newBuilder().setCodec(codec)
+            .setData(data).setParity(parity).setEcChunkSize(chunkSize).build();
+
+    ReplicationConfig config =
+        ReplicationConfig.fromProto(ReplicationType.EC, null, proto);
+
+    Assert.assertEquals(EcCodec.valueOf(
+        codec) + ECReplicationConfig.EC_REPLICATION_PARAMS_DELIMITER
+            + data + ECReplicationConfig.EC_REPLICATION_PARAMS_DELIMITER
+            + parity + ECReplicationConfig.EC_REPLICATION_PARAMS_DELIMITER
+            + chunkSize, config.getReplication());
+  }
+
+  @Test
+  public void testReplicationConfigGetReplication() {
+    assumeRatisOrStandaloneType();
+    final ReplicationConfig replicationConfig = ReplicationConfig
+        .fromTypeAndFactor(
+            org.apache.hadoop.hdds.client.ReplicationType.valueOf(type),
+            org.apache.hadoop.hdds.client.ReplicationFactor.valueOf(factor));
+
+    Assert.assertEquals(factor, replicationConfig.getReplication());
+  }
+
+  @Test
   public void fromJavaObjects() {
     assumeRatisOrStandaloneType();
     final ReplicationConfig replicationConfig =
diff --git 
a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/PipelineEndpoint.java
 
b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/PipelineEndpoint.java
index d475be4..0595bbf 100644
--- 
a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/PipelineEndpoint.java
+++ 
b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/PipelineEndpoint.java
@@ -18,7 +18,6 @@
 
 package org.apache.hadoop.ozone.recon.api;
 
-import org.apache.hadoop.hdds.client.ReplicationConfig;
 import org.apache.hadoop.hdds.scm.pipeline.Pipeline;
 import org.apache.hadoop.hdds.scm.server.OzoneStorageContainerManager;
 import org.apache.hadoop.ozone.recon.MetricsServiceProviderFactory;
@@ -105,9 +104,7 @@ public class PipelineEndpoint {
               .setDatanodes(datanodes)
               .setDuration(duration)
               .setStatus(pipeline.getPipelineState())
-              .setReplicationFactor(ReplicationConfig
-                  
.getLegacyFactor(pipeline.getReplicationConfig()).getNumber())
-          .setReplicationType(pipeline.getType().toString());
+              .setReplicationConfig(pipeline.getReplicationConfig());
       // If any metrics service providers like Prometheus
       // is configured, then query it for metrics and populate
       // leader election count and last leader election time
diff --git 
a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/types/DatanodePipeline.java
 
b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/types/DatanodePipeline.java
index 88a2989..e302cad 100644
--- 
a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/types/DatanodePipeline.java
+++ 
b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/types/DatanodePipeline.java
@@ -26,13 +26,15 @@ import java.util.UUID;
  */
 public class DatanodePipeline {
   private UUID pipelineID;
-  private ReplicationConfig repConfig;
+  private String replicationType;
+  private String replicationFactor;
   private String leaderNode;
 
-  public DatanodePipeline(UUID pipelineID, ReplicationConfig repConfig,
+  public DatanodePipeline(UUID pipelineID, ReplicationConfig replicationConfig,
       String leaderNode) {
     this.pipelineID = pipelineID;
-    this.repConfig = repConfig;
+    this.replicationType = replicationConfig.getReplicationType().toString();
+    this.replicationFactor = replicationConfig.getReplication();
     this.leaderNode = leaderNode;
   }
 
@@ -41,11 +43,11 @@ public class DatanodePipeline {
   }
 
   public String getReplicationType() {
-    return repConfig.getReplicationType().name();
+    return replicationType;
   }
 
-  public ReplicationConfig getReplicationConfig() {
-    return repConfig;
+  public String getReplicationFactor() {
+    return replicationFactor;
   }
 
   public String getLeaderNode() {
diff --git 
a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/types/PipelineMetadata.java
 
b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/types/PipelineMetadata.java
index 7af171f..e7facbf 100644
--- 
a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/types/PipelineMetadata.java
+++ 
b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/types/PipelineMetadata.java
@@ -19,6 +19,7 @@ package org.apache.hadoop.ozone.recon.api.types;
 
 import com.google.common.base.Preconditions;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.hadoop.hdds.client.ReplicationConfig;
 import org.apache.hadoop.hdds.scm.pipeline.Pipeline.PipelineState;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -57,8 +58,10 @@ public final class PipelineMetadata {
   @XmlElement(name = "replicationType")
   private String replicationType;
 
+  // TODO: name can be changed to just "replication". Currently EC replication
+  //  also showed with below parameter but in String format.
   @XmlElement(name = "replicationFactor")
-  private int replicationFactor;
+  private String replicationFactor;
 
   @XmlElement(name = "containers")
   private int containers;
@@ -95,7 +98,7 @@ public final class PipelineMetadata {
     return replicationType;
   }
 
-  public int getReplicationFactor() {
+  public String getReplicationFactor() {
     return replicationFactor;
   }
 
@@ -139,7 +142,7 @@ public final class PipelineMetadata {
     private long duration;
     private long leaderElections;
     private String replicationType;
-    private int replicationFactor;
+    private String replicationFactor;
     private int containers;
 
     public Builder() {
@@ -200,13 +203,9 @@ public final class PipelineMetadata {
       return this;
     }
 
-    public Builder setReplicationType(String replicationType) {
-      this.replicationType = replicationType;
-      return this;
-    }
-
-    public Builder setReplicationFactor(int replicationFactor) {
-      this.replicationFactor = replicationFactor;
+    public Builder setReplicationConfig(ReplicationConfig replicationConfig) {
+      this.replicationType = replicationConfig.getReplicationType().toString();
+      this.replicationFactor = replicationConfig.getReplication();
       return this;
     }
 
diff --git 
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/datanodes/datanodes.tsx
 
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/datanodes/datanodes.tsx
index 62093d6..1781002 100644
--- 
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/datanodes/datanodes.tsx
+++ 
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/datanodes/datanodes.tsx
@@ -82,7 +82,7 @@ interface IDatanode {
 interface IPipeline {
   pipelineID: string;
   replicationType: string;
-  replicationFactor: number;
+  replicationFactor: string;
   leaderNode: string;
 }
 
diff --git 
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/pipelines/pipelines.tsx
 
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/pipelines/pipelines.tsx
index 342a8bd..6810cba 100644
--- 
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/pipelines/pipelines.tsx
+++ 
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/pipelines/pipelines.tsx
@@ -44,7 +44,7 @@ interface IPipelineResponse {
   lastLeaderElection: number;
   duration: number;
   leaderElections: number;
-  replicationFactor: number;
+  replicationFactor: string;
   containers: number;
 }
 
diff --git 
a/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestEndpoints.java
 
b/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestEndpoints.java
index 80fd59f..8ea440b 100644
--- 
a/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestEndpoints.java
+++ 
b/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestEndpoints.java
@@ -414,9 +414,8 @@ public class TestEndpoints extends AbstractReconSqlDBTest {
       Assert.assertEquals(1, datanodeMetadata.getPipelines().size());
       Assert.assertEquals(pipelineId,
           datanodeMetadata.getPipelines().get(0).getPipelineID().toString());
-      Assert.assertEquals(pipeline.getReplicationConfig().getRequiredNodes(),
-          datanodeMetadata.getPipelines().get(0).getReplicationConfig()
-              .getRequiredNodes());
+      Assert.assertEquals(pipeline.getReplicationConfig().getReplication(),
+          datanodeMetadata.getPipelines().get(0).getReplicationFactor());
       Assert.assertEquals(pipeline.getType().toString(),
           datanodeMetadata.getPipelines().get(0).getReplicationType());
       Assert.assertEquals(pipeline.getLeaderNode().getHostName(),
@@ -523,7 +522,7 @@ public class TestEndpoints extends AbstractReconSqlDBTest {
     Assert.assertEquals(1, pipelineMetadata.getDatanodes().size());
     Assert.assertEquals(pipeline.getType().toString(),
         pipelineMetadata.getReplicationType());
-    Assert.assertEquals(pipeline.getReplicationConfig().getRequiredNodes(),
+    Assert.assertEquals(pipeline.getReplicationConfig().getReplication(),
         pipelineMetadata.getReplicationFactor());
     Assert.assertEquals(datanodeDetails.getHostName(),
         pipelineMetadata.getLeaderNode());

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

Reply via email to