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]