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

adoroszlai pushed a commit to branch HDDS-10656-atomic-key-overwrite
in repository https://gitbox.apache.org/repos/asf/ozone.git


The following commit(s) were added to 
refs/heads/HDDS-10656-atomic-key-overwrite by this push:
     new 54f151946c HDDS-11048. Remove dev-only toggle functionality of rewrite 
CLI (#6846)
54f151946c is described below

commit 54f151946cc349087bf73de04aa85a5d128f4584
Author: Doroszlai, Attila <[email protected]>
AuthorDate: Sat Jun 22 11:22:30 2024 +0200

    HDDS-11048. Remove dev-only toggle functionality of rewrite CLI (#6846)
---
 .../ozone/freon/FreonReplicationOptions.java       |  9 +++++++-
 ...tions.java => MandatoryReplicationOptions.java} | 24 +++++++++++++++-------
 .../hadoop/ozone/shell/ReplicationOptions.java     | 19 +++++++++--------
 .../ozone/shell/ShellReplicationOptions.java       | 10 ++++++++-
 .../hadoop/ozone/shell/keys/RewriteKeyHandler.java | 14 ++++---------
 5 files changed, 49 insertions(+), 27 deletions(-)

diff --git 
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/freon/FreonReplicationOptions.java
 
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/freon/FreonReplicationOptions.java
index d26e3f6cfb..3cd6067dd7 100644
--- 
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/freon/FreonReplicationOptions.java
+++ 
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/freon/FreonReplicationOptions.java
@@ -52,12 +52,19 @@ public class FreonReplicationOptions extends 
ReplicationOptions {
 
   // -t is already taken for number of threads
   @Option(names = {"--type", "--replication-type"},
-      description = "Replication type. Supported types are: RATIS, EC")
+      description = TYPE_DESCRIPTION)
   @Override
   public void setType(String type) {
     super.setType(type);
   }
 
+  @Option(names = {"--replication", "-r"},
+      description = REPLICATION_DESCRIPTION)
+  @Override
+  public void setReplication(String replication) {
+    super.setReplication(replication);
+  }
+
   /**
    * Support legacy --factor option.
    */
diff --git 
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/ShellReplicationOptions.java
 
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/MandatoryReplicationOptions.java
similarity index 63%
copy from 
hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/ShellReplicationOptions.java
copy to 
hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/MandatoryReplicationOptions.java
index c905bd8885..25a862f37d 100644
--- 
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/ShellReplicationOptions.java
+++ 
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/MandatoryReplicationOptions.java
@@ -6,9 +6,9 @@
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
- * <p>
+ *
  * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -17,17 +17,27 @@
  */
 package org.apache.hadoop.ozone.shell;
 
-import picocli.CommandLine.Option;
+import picocli.CommandLine;
 
 /**
- * Options for specifying replication config in 'ozone shell' commands.
+ * Options for requiring replication config in 'ozone shell' commands.
  */
-public class ShellReplicationOptions extends ReplicationOptions {
+public class MandatoryReplicationOptions extends ReplicationOptions {
 
-  @Option(names = {"-t", "--type", "--replication-type"},
-      description = "Replication type. Supported types are: RATIS, EC")
+  @CommandLine.Option(names = {"--replication", "-r"},
+      description = REPLICATION_DESCRIPTION,
+      required = true)
+  @Override
+  public void setReplication(String replication) {
+    super.setReplication(replication);
+  }
+
+  @CommandLine.Option(names = {"-t", "--type", "--replication-type"},
+      description = TYPE_DESCRIPTION,
+      required = true)
   @Override
   public void setType(String type) {
     super.setType(type);
   }
+
 }
diff --git 
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/ReplicationOptions.java
 
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/ReplicationOptions.java
index 7af32dd604..3c9f46f1fd 100644
--- 
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/ReplicationOptions.java
+++ 
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/ReplicationOptions.java
@@ -21,7 +21,6 @@ import org.apache.hadoop.fs.ozone.OzoneClientUtils;
 import org.apache.hadoop.hdds.client.ReplicationConfig;
 import org.apache.hadoop.hdds.client.ReplicationType;
 import org.apache.hadoop.hdds.conf.ConfigurationSource;
-import picocli.CommandLine;
 
 import java.util.Optional;
 
@@ -35,6 +34,14 @@ import static 
org.apache.hadoop.ozone.OzoneConfigKeys.OZONE_REPLICATION_TYPE;
  */
 public abstract class ReplicationOptions {
 
+  protected static final String REPLICATION_DESCRIPTION =
+      "Replication definition. Valid values are replication"
+          + " type-specific.  For RATIS: ONE or THREE."
+          + " In case of EC, pass CODEC-DATA-PARITY-CHUNKSIZE, "
+          + " e.g. rs-3-2-1024k, rs-6-3-1024k, rs-10-4-1024k";
+  protected static final String TYPE_DESCRIPTION =
+      "Replication type. Supported types are: RATIS, EC";
+
   private ReplicationType type;
   private String replication;
 
@@ -71,17 +78,13 @@ public abstract class ReplicationOptions {
             .orElse(null));
   }
 
-  @CommandLine.Option(names = {"--replication", "-r"},
-      description = "Replication definition. Valid values are replication"
-          + " type-specific.  For RATIS: ONE or THREE."
-          + " In case of EC, pass CODEC-DATA-PARITY-CHUNKSIZE, "
-          + " e.g. rs-3-2-1024k, rs-6-3-1024k, rs-10-4-1024k")
-  public void setReplication(String replication) {
+  // Option is defined in subclasses
+  protected void setReplication(String replication) {
     this.replication = replication;
   }
 
   // Option is defined in subclasses
-  public void setType(String type) {
+  protected void setType(String type) {
     try {
       ReplicationType replicationType = ReplicationType.valueOf(type);
       if (replicationType == ReplicationType.CHAINED
diff --git 
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/ShellReplicationOptions.java
 
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/ShellReplicationOptions.java
index c905bd8885..cf454e8270 100644
--- 
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/ShellReplicationOptions.java
+++ 
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/ShellReplicationOptions.java
@@ -25,9 +25,17 @@ import picocli.CommandLine.Option;
 public class ShellReplicationOptions extends ReplicationOptions {
 
   @Option(names = {"-t", "--type", "--replication-type"},
-      description = "Replication type. Supported types are: RATIS, EC")
+      description = TYPE_DESCRIPTION)
   @Override
   public void setType(String type) {
     super.setType(type);
   }
+
+  @Option(names = {"--replication", "-r"},
+      description = REPLICATION_DESCRIPTION)
+  @Override
+  public void setReplication(String replication) {
+    super.setReplication(replication);
+  }
+
 }
diff --git 
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/keys/RewriteKeyHandler.java
 
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/keys/RewriteKeyHandler.java
index c6f97c6528..35e8da5f38 100644
--- 
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/keys/RewriteKeyHandler.java
+++ 
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/keys/RewriteKeyHandler.java
@@ -17,18 +17,15 @@
  */
 package org.apache.hadoop.ozone.shell.keys;
 
-import org.apache.hadoop.hdds.client.ECReplicationConfig;
-import org.apache.hadoop.hdds.client.RatisReplicationConfig;
 import org.apache.hadoop.hdds.client.ReplicationConfig;
-import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
 import org.apache.hadoop.io.IOUtils;
 import org.apache.hadoop.ozone.client.OzoneBucket;
 import org.apache.hadoop.ozone.client.OzoneClient;
 import org.apache.hadoop.ozone.client.OzoneClientException;
 import org.apache.hadoop.ozone.client.OzoneKeyDetails;
 import org.apache.hadoop.ozone.client.OzoneVolume;
+import org.apache.hadoop.ozone.shell.MandatoryReplicationOptions;
 import org.apache.hadoop.ozone.shell.OzoneAddress;
-import org.apache.hadoop.ozone.shell.ShellReplicationOptions;
 import picocli.CommandLine;
 
 import java.io.IOException;
@@ -45,7 +42,7 @@ import static org.apache.hadoop.ozone.OzoneConsts.MB;
 public class RewriteKeyHandler extends KeyHandler {
 
   @CommandLine.Mixin
-  private ShellReplicationOptions replication;
+  private MandatoryReplicationOptions replication;
 
   @Override
   protected void execute(OzoneClient client, OzoneAddress address) throws 
IOException, OzoneClientException {
@@ -58,11 +55,8 @@ public class RewriteKeyHandler extends KeyHandler {
     OzoneKeyDetails key = bucket.getKey(keyName);
 
     ReplicationConfig newReplication = 
replication.fromParamsOrConfig(getConf());
-    if (newReplication == null) {
-      newReplication = key.getReplicationConfig().getReplicationType() == 
HddsProtos.ReplicationType.RATIS
-          ? new ECReplicationConfig(3, 2)
-          : 
RatisReplicationConfig.getInstance(HddsProtos.ReplicationFactor.THREE);
-    } else if (newReplication.equals(key.getReplicationConfig())) {
+    if (newReplication == null ||
+        newReplication.equals(key.getReplicationConfig())) {
       System.err.println("Replication unchanged: " + 
key.getReplicationConfig());
       return;
     }


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

Reply via email to