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

adoroszlai 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 3e9cdb609b HDDS-11378. Allow disabling OM version-specific feature via 
config (#7129)
3e9cdb609b is described below

commit 3e9cdb609b5c9a1856891b6467859c7fc9fdcc77
Author: Doroszlai, Attila <[email protected]>
AuthorDate: Thu Aug 29 08:31:48 2024 +0200

    HDDS-11378. Allow disabling OM version-specific feature via config (#7129)
---
 .../src/main/java/org/apache/hadoop/ozone/om/OMConfigKeys.java     | 3 +++
 hadoop-ozone/dist/src/main/compose/compatibility/docker-config     | 1 +
 hadoop-ozone/dist/src/main/smoketest/compatibility/om.robot        | 5 +++++
 .../java/org/apache/hadoop/ozone/TestOzoneConfigurationFields.java | 1 +
 .../src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java     | 7 +++++++
 .../org/apache/hadoop/ozone/om/request/key/OMKeyCommitRequest.java | 5 +++++
 .../org/apache/hadoop/ozone/om/request/key/OMKeyCreateRequest.java | 5 +++++
 7 files changed, 27 insertions(+)

diff --git 
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/OMConfigKeys.java
 
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/OMConfigKeys.java
index 0f3b55235b..46becc9e64 100644
--- 
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/OMConfigKeys.java
+++ 
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/OMConfigKeys.java
@@ -73,6 +73,9 @@ public final class OMConfigKeys {
   public static final String OZONE_OM_DECOMMISSIONED_NODES_KEY =
       "ozone.om.decommissioned.nodes";
 
+  public static final String OZONE_OM_FEATURES_DISABLED =
+      "ozone.om.features.disabled";
+
   public static final String OZONE_OM_ADDRESS_KEY =
       "ozone.om.address";
   public static final String OZONE_OM_BIND_HOST_DEFAULT =
diff --git a/hadoop-ozone/dist/src/main/compose/compatibility/docker-config 
b/hadoop-ozone/dist/src/main/compose/compatibility/docker-config
index a5727d2b1e..d3984110d8 100644
--- a/hadoop-ozone/dist/src/main/compose/compatibility/docker-config
+++ b/hadoop-ozone/dist/src/main/compose/compatibility/docker-config
@@ -31,6 +31,7 @@ OZONE-SITE.XML_hdds.datanode.volume.min.free.space=100MB
 OZONE-SITE.XML_ozone.recon.address=recon:9891
 OZONE-SITE.XML_hdds.scmclient.max.retry.timeout=30s
 OZONE-SITE.XML_ozone.http.basedir=/tmp/ozone_http
+OZONE-SITE.XML_ozone.om.features.disabled=ATOMIC_REWRITE_KEY
 
 HADOOP_OPTS="-Dhadoop.opts=test"
 HDFS_STORAGECONTAINERMANAGER_OPTS="-Dhdfs.scm.opts=test"
diff --git a/hadoop-ozone/dist/src/main/smoketest/compatibility/om.robot 
b/hadoop-ozone/dist/src/main/smoketest/compatibility/om.robot
index dc862d59c1..c3caec2ae9 100644
--- a/hadoop-ozone/dist/src/main/smoketest/compatibility/om.robot
+++ b/hadoop-ozone/dist/src/main/smoketest/compatibility/om.robot
@@ -25,3 +25,8 @@ Picks up command line options
     ${processes} =    List All Processes
     Should Contain    ${processes}   %{HDFS_OM_OPTS}
     Should Contain    ${processes}   %{HADOOP_OPTS}
+
+Rejects Atomic Key Rewrite
+    Execute           ozone freon ockg -n1 -t1 -p rewrite
+    ${output} =       Execute and check rc    ozone sh key rewrite -t EC -r 
rs-3-2-1024k /vol1/bucket1/rewrite/0    255
+    Should Contain    ${output}    Feature disabled: ATOMIC_REWRITE_KEY
diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestOzoneConfigurationFields.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestOzoneConfigurationFields.java
index cc1f93fbc1..8a219514d3 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestOzoneConfigurationFields.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestOzoneConfigurationFields.java
@@ -93,6 +93,7 @@ public class TestOzoneConfigurationFields extends 
TestConfigurationFieldsBase {
         OMConfigKeys.OZONE_FS_TRASH_INTERVAL_KEY,
         OMConfigKeys.OZONE_FS_TRASH_CHECKPOINT_INTERVAL_KEY,
         OMConfigKeys.OZONE_OM_S3_GPRC_SERVER_ENABLED,
+        OMConfigKeys.OZONE_OM_FEATURES_DISABLED,
         OzoneConfigKeys.OZONE_ACL_AUTHORIZER_CLASS_NATIVE,
         OzoneConfigKeys.OZONE_CLIENT_REQUIRED_OM_VERSION_MIN_KEY,
         OzoneConfigKeys.OZONE_RECOVERING_CONTAINER_SCRUBBING_SERVICE_WORKERS,
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
index 2fb15ec3d6..602158bb5c 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
@@ -5008,4 +5008,11 @@ public final class OzoneManager extends 
ServiceRuntimeInfoImpl
       getOmServerProtocol().awaitDoubleBufferFlush();
     }
   }
+
+  public void checkFeatureEnabled(OzoneManagerVersion feature) throws 
OMException {
+    String disabledFeatures = 
configuration.get(OMConfigKeys.OZONE_OM_FEATURES_DISABLED, "");
+    if (disabledFeatures.contains(feature.name())) {
+      throw new OMException("Feature disabled: " + feature, 
OMException.ResultCodes.NOT_SUPPORTED_OPERATION);
+    }
+  }
 }
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyCommitRequest.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyCommitRequest.java
index b8bf89a354..8a21fdfa37 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyCommitRequest.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyCommitRequest.java
@@ -28,6 +28,7 @@ import java.util.Map;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.hadoop.ozone.OzoneManagerVersion;
 import org.apache.ratis.server.protocol.TermIndex;
 import org.apache.hadoop.ozone.OmUtils;
 import org.apache.hadoop.ozone.OzoneConfigKeys;
@@ -96,6 +97,10 @@ public class OMKeyCommitRequest extends OMKeyRequest {
 
     KeyArgs keyArgs = commitKeyRequest.getKeyArgs();
 
+    if (keyArgs.hasExpectedDataGeneration()) {
+      ozoneManager.checkFeatureEnabled(OzoneManagerVersion.ATOMIC_REWRITE_KEY);
+    }
+
     // Verify key name
     final boolean checkKeyNameEnabled = ozoneManager.getConfiguration()
          .getBoolean(OMConfigKeys.OZONE_OM_KEYNAME_CHARACTER_CHECK_ENABLED_KEY,
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyCreateRequest.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyCreateRequest.java
index d0ed0eacec..dee5bb0fe0 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyCreateRequest.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyCreateRequest.java
@@ -28,6 +28,7 @@ import java.util.stream.Collectors;
 
 import com.google.common.base.Preconditions;
 import org.apache.hadoop.hdds.client.ReplicationConfig;
+import org.apache.hadoop.ozone.OzoneManagerVersion;
 import org.apache.ratis.server.protocol.TermIndex;
 import org.apache.hadoop.ozone.OmUtils;
 import org.apache.hadoop.ozone.om.OMConfigKeys;
@@ -93,6 +94,10 @@ public class OMKeyCreateRequest extends OMKeyRequest {
 
     KeyArgs keyArgs = createKeyRequest.getKeyArgs();
 
+    if (keyArgs.hasExpectedDataGeneration()) {
+      ozoneManager.checkFeatureEnabled(OzoneManagerVersion.ATOMIC_REWRITE_KEY);
+    }
+
     // Verify key name
     OmUtils.verifyKeyNameWithSnapshotReservedWord(keyArgs.getKeyName());
     final boolean checkKeyNameEnabled = ozoneManager.getConfiguration()


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

Reply via email to