From a8e5f31bbfb0f91cfa0a01303d4f7ca72d420a76 Mon Sep 17 00:00:00 2001 From: Swaminathan Balachandran Date: Wed, 10 Jul 2024 10:37:59 -0700 Subject: [PATCH 1/3] HDDS-11132. Update the OLDER_CLIENT_REQUEST validations to check against bucket types. Change-Id: I421522b5367d8e36c229c81aa5e4d5a53561f8b9 --- .../request/bucket/OMBucketDeleteRequest.java | 17 +++++---- .../file/OMDirectoryCreateRequest.java | 4 ++- .../om/request/file/OMFileCreateRequest.java | 4 ++- .../request/key/OMAllocateBlockRequest.java | 4 ++- .../om/request/key/OMKeyCommitRequest.java | 4 ++- .../om/request/key/OMKeyCreateRequest.java | 4 ++- .../om/request/key/OMKeyDeleteRequest.java | 4 ++- .../om/request/key/OMKeyRenameRequest.java | 4 ++- .../om/request/key/OMKeysDeleteRequest.java | 4 ++- .../om/request/key/OMKeysRenameRequest.java | 4 ++- .../request/key/acl/OMKeyAddAclRequest.java | 4 ++- .../key/acl/OMKeyRemoveAclRequest.java | 4 ++- .../request/key/acl/OMKeySetAclRequest.java | 4 ++- .../S3InitiateMultipartUploadRequest.java | 4 ++- .../S3MultipartUploadAbortRequest.java | 4 ++- .../S3MultipartUploadCommitPartRequest.java | 4 ++- .../S3MultipartUploadCompleteRequest.java | 4 ++- .../OzoneManagerRequestHandler.java | 36 ++++++++++++------- 18 files changed, 83 insertions(+), 34 deletions(-) diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketDeleteRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketDeleteRequest.java index 48a3c807b9a3..add8a7c4709c 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketDeleteRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketDeleteRequest.java @@ -23,6 +23,7 @@ import java.util.Iterator; import java.util.Map; +import org.apache.hadoop.ozone.ClientVersion; import org.apache.ratis.server.protocol.TermIndex; import org.apache.hadoop.hdds.utils.db.Table; import org.apache.hadoop.hdds.utils.db.TableIterator; @@ -287,13 +288,17 @@ private boolean bucketContainsSnapshotInCache( ) public static OMRequest blockBucketDeleteWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { - DeleteBucketRequest request = req.getDeleteBucketRequest(); - - if (request.hasBucketName() && request.hasVolumeName()) { - BucketLayout bucketLayout = ctx.getBucketLayout( - request.getVolumeName(), request.getBucketName()); - bucketLayout.validateSupportedOperation(); + if (ClientVersion.fromProtoValue(req.getVersion()) + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0) { + DeleteBucketRequest request = req.getDeleteBucketRequest(); + + if (request.hasBucketName() && request.hasVolumeName()) { + BucketLayout bucketLayout = ctx.getBucketLayout( + request.getVolumeName(), request.getBucketName()); + bucketLayout.validateSupportedOperation(); + } } return req; + } } diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMDirectoryCreateRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMDirectoryCreateRequest.java index 6071110a315d..0037d2cc65a3 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMDirectoryCreateRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMDirectoryCreateRequest.java @@ -31,6 +31,7 @@ import org.apache.hadoop.hdds.client.ECReplicationConfig; import org.apache.hadoop.hdds.client.ReplicationConfig; import org.apache.hadoop.hdds.protocol.proto.HddsProtos; +import org.apache.hadoop.ozone.ClientVersion; import org.apache.ratis.server.protocol.TermIndex; import org.apache.hadoop.ozone.OmUtils; import org.apache.hadoop.ozone.om.helpers.OmKeyLocationInfoGroup; @@ -438,7 +439,8 @@ public static OMRequest disallowCreateDirectoryWithECReplicationConfig( ) public static OMRequest blockCreateDirectoryWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { - if (req.getCreateDirectoryRequest().hasKeyArgs()) { + if (ClientVersion.fromProtoValue(req.getVersion()) + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getCreateDirectoryRequest().hasKeyArgs()) { KeyArgs keyArgs = req.getCreateDirectoryRequest().getKeyArgs(); if (keyArgs.hasVolumeName() && keyArgs.hasBucketName()) { diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMFileCreateRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMFileCreateRequest.java index 9b9fb4e7cc5c..add41e9dda62 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMFileCreateRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMFileCreateRequest.java @@ -29,6 +29,7 @@ import com.google.common.base.Preconditions; import org.apache.commons.lang3.StringUtils; import org.apache.hadoop.hdds.client.ReplicationConfig; +import org.apache.hadoop.ozone.ClientVersion; import org.apache.ratis.server.protocol.TermIndex; import org.apache.hadoop.ozone.OmUtils; import org.apache.hadoop.ozone.OzoneConsts; @@ -431,7 +432,8 @@ public static OMRequest disallowCreateFileWithECReplicationConfig( ) public static OMRequest blockCreateFileWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { - if (req.getCreateFileRequest().hasKeyArgs()) { + if (ClientVersion.fromProtoValue(req.getVersion()) + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getCreateFileRequest().hasKeyArgs()) { KeyArgs keyArgs = req.getCreateFileRequest().getKeyArgs(); diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMAllocateBlockRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMAllocateBlockRequest.java index ac4d9ab6244f..9033e0bfc945 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMAllocateBlockRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMAllocateBlockRequest.java @@ -26,6 +26,7 @@ import com.google.common.base.Preconditions; import org.apache.hadoop.hdds.client.ReplicationConfig; +import org.apache.hadoop.ozone.ClientVersion; import org.apache.ratis.server.protocol.TermIndex; import org.apache.hadoop.ozone.om.helpers.BucketLayout; import org.apache.hadoop.ozone.om.helpers.OmBucketInfo; @@ -304,7 +305,8 @@ public static OMRequest disallowAllocateBlockWithECReplicationConfig( ) public static OMRequest blockAllocateBlockWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { - if (req.getAllocateBlockRequest().hasKeyArgs()) { + if (ClientVersion.fromProtoValue(req.getVersion()) + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getAllocateBlockRequest().hasKeyArgs()) { KeyArgs keyArgs = req.getAllocateBlockRequest().getKeyArgs(); if (keyArgs.hasVolumeName() && keyArgs.hasBucketName()) { 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 7d31422c80e3..a6be6f20d2fc 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 com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; import org.apache.commons.lang3.StringUtils; +import org.apache.hadoop.ozone.ClientVersion; import org.apache.ratis.server.protocol.TermIndex; import org.apache.hadoop.ozone.OmUtils; import org.apache.hadoop.ozone.OzoneConfigKeys; @@ -469,7 +470,8 @@ public static OMRequest disallowCommitKeyWithECReplicationConfig( ) public static OMRequest blockCommitKeyWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { - if (req.getCommitKeyRequest().hasKeyArgs()) { + if (ClientVersion.fromProtoValue(req.getVersion()) + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getCommitKeyRequest().hasKeyArgs()) { KeyArgs keyArgs = req.getCommitKeyRequest().getKeyArgs(); if (keyArgs.hasVolumeName() && keyArgs.hasBucketName()) { 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 36f2a8c31be1..2d87868744b1 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 com.google.common.base.Preconditions; import org.apache.hadoop.hdds.client.ReplicationConfig; +import org.apache.hadoop.ozone.ClientVersion; import org.apache.ratis.server.protocol.TermIndex; import org.apache.hadoop.ozone.OmUtils; import org.apache.hadoop.ozone.om.OMConfigKeys; @@ -430,7 +431,8 @@ public static OMRequest disallowCreateKeyWithECReplicationConfig( ) public static OMRequest blockCreateKeyWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { - if (req.getCreateKeyRequest().hasKeyArgs()) { + if (ClientVersion.fromProtoValue(req.getVersion()) + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getCreateKeyRequest().hasKeyArgs()) { KeyArgs keyArgs = req.getCreateKeyRequest().getKeyArgs(); if (keyArgs.hasVolumeName() && keyArgs.hasBucketName()) { diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyDeleteRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyDeleteRequest.java index 61e5976f8052..57e7adb67b26 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyDeleteRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyDeleteRequest.java @@ -23,6 +23,7 @@ import java.util.Map; import org.apache.hadoop.hdds.utils.db.Table; +import org.apache.hadoop.ozone.ClientVersion; import org.apache.hadoop.ozone.OzoneConsts; import org.apache.ratis.server.protocol.TermIndex; import org.apache.hadoop.ozone.OmUtils; @@ -239,7 +240,8 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn ) public static OMRequest blockDeleteKeyWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { - if (req.getDeleteKeyRequest().hasKeyArgs()) { + if (ClientVersion.fromProtoValue(req.getVersion()) + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getDeleteKeyRequest().hasKeyArgs()) { KeyArgs keyArgs = req.getDeleteKeyRequest().getKeyArgs(); if (keyArgs.hasVolumeName() && keyArgs.hasBucketName()) { diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRenameRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRenameRequest.java index db08951831cb..5210e7da516c 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRenameRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRenameRequest.java @@ -23,6 +23,7 @@ import java.util.Map; import com.google.common.base.Preconditions; +import org.apache.hadoop.ozone.ClientVersion; import org.apache.ratis.server.protocol.TermIndex; import org.apache.hadoop.ozone.OmUtils; import org.apache.hadoop.ozone.OzoneConsts; @@ -276,7 +277,8 @@ private Map buildAuditMap( ) public static OMRequest blockRenameKeyWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { - if (req.getRenameKeyRequest().hasKeyArgs()) { + if (ClientVersion.fromProtoValue(req.getVersion()) + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getRenameKeyRequest().hasKeyArgs()) { KeyArgs keyArgs = req.getRenameKeyRequest().getKeyArgs(); if (keyArgs.hasVolumeName() && keyArgs.hasBucketName()) { diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysDeleteRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysDeleteRequest.java index 19e9ed716e4a..ac48b5ab9657 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysDeleteRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysDeleteRequest.java @@ -20,6 +20,7 @@ import org.apache.commons.lang3.tuple.Pair; import org.apache.hadoop.hdds.utils.db.Table; +import org.apache.hadoop.ozone.ClientVersion; import org.apache.hadoop.ozone.OzoneConsts; import org.apache.ratis.server.protocol.TermIndex; import org.apache.hadoop.hdds.utils.db.cache.CacheKey; @@ -357,7 +358,8 @@ protected static void addDeletedKeys(Map auditMap, ) public static OMRequest blockDeleteKeysWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { - if (req.getDeleteKeysRequest().hasDeleteKeys()) { + if (ClientVersion.fromProtoValue(req.getVersion()) + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getDeleteKeysRequest().hasDeleteKeys()) { DeleteKeyArgs keyArgs = req.getDeleteKeysRequest().getDeleteKeys(); if (keyArgs.hasVolumeName() && keyArgs.hasBucketName()) { diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysRenameRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysRenameRequest.java index 0b93dd57946e..6b631472111a 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysRenameRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysRenameRequest.java @@ -19,6 +19,7 @@ package org.apache.hadoop.ozone.om.request.key; import org.apache.commons.lang3.tuple.Pair; +import org.apache.hadoop.ozone.ClientVersion; import org.apache.ratis.server.protocol.TermIndex; import org.apache.hadoop.hdds.utils.db.Table; import org.apache.hadoop.hdds.utils.db.cache.CacheKey; @@ -303,7 +304,8 @@ private Map buildAuditMap(Map auditMap, ) public static OMRequest blockRenameKeysWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { - if (req.getRenameKeysRequest().hasRenameKeysArgs()) { + if (ClientVersion.fromProtoValue(req.getVersion()) + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getRenameKeysRequest().hasRenameKeysArgs()) { RenameKeysArgs keyArgs = req.getRenameKeysRequest().getRenameKeysArgs(); if (keyArgs.hasVolumeName() && keyArgs.hasBucketName()) { diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeyAddAclRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeyAddAclRequest.java index 31fa245fa55b..6060809a8afa 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeyAddAclRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeyAddAclRequest.java @@ -23,6 +23,7 @@ import java.util.Map; import com.google.common.collect.Lists; +import org.apache.hadoop.ozone.ClientVersion; import org.apache.ratis.server.protocol.TermIndex; import org.apache.hadoop.ozone.OzoneAcl; import org.apache.hadoop.ozone.OzoneConsts; @@ -171,7 +172,8 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn ) public static OMRequest blockAddAclWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { - if (req.getAddAclRequest().hasObj()) { + if (ClientVersion.fromProtoValue(req.getVersion()) + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getAddAclRequest().hasObj()) { OzoneObj obj = OzoneObjInfo.fromProtobuf(req.getAddAclRequest().getObj()); String path = obj.getPath(); diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeyRemoveAclRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeyRemoveAclRequest.java index 7e4fc04eb39c..100091b1a107 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeyRemoveAclRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeyRemoveAclRequest.java @@ -23,6 +23,7 @@ import java.util.Map; import com.google.common.collect.Lists; +import org.apache.hadoop.ozone.ClientVersion; import org.apache.ratis.server.protocol.TermIndex; import org.apache.hadoop.ozone.OzoneAcl; import org.apache.hadoop.ozone.OzoneConsts; @@ -172,7 +173,8 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn ) public static OMRequest blockRemoveAclWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { - if (req.getRemoveAclRequest().hasObj()) { + if (ClientVersion.fromProtoValue(req.getVersion()) + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getRemoveAclRequest().hasObj()) { OzoneObj obj = OzoneObjInfo.fromProtobuf(req.getRemoveAclRequest().getObj()); String path = obj.getPath(); diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeySetAclRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeySetAclRequest.java index 0e5e1cf3362a..ed7b01e985f3 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeySetAclRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeySetAclRequest.java @@ -23,6 +23,7 @@ import java.util.Map; import com.google.common.collect.Lists; +import org.apache.hadoop.ozone.ClientVersion; import org.apache.ratis.server.protocol.TermIndex; import org.apache.hadoop.ozone.OzoneAcl; import org.apache.hadoop.ozone.OzoneConsts; @@ -168,7 +169,8 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn ) public static OMRequest blockSetAclWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { - if (req.getSetAclRequest().hasObj()) { + if (ClientVersion.fromProtoValue(req.getVersion()) + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getSetAclRequest().hasObj()) { OzoneObj obj = OzoneObjInfo.fromProtobuf(req.getSetAclRequest().getObj()); String path = obj.getPath(); diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3InitiateMultipartUploadRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3InitiateMultipartUploadRequest.java index f16ef9f8f423..72c325c37843 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3InitiateMultipartUploadRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3InitiateMultipartUploadRequest.java @@ -20,6 +20,7 @@ import com.google.common.base.Preconditions; import org.apache.hadoop.hdds.client.ReplicationConfig; +import org.apache.hadoop.ozone.ClientVersion; import org.apache.hadoop.ozone.OzoneConsts; import org.apache.hadoop.ozone.om.helpers.KeyValueUtil; import org.apache.ratis.server.protocol.TermIndex; @@ -326,7 +327,8 @@ protected void logResult(OzoneManager ozoneManager, ) public static OMRequest blockInitiateMPUWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { - if (req.getInitiateMultiPartUploadRequest().hasKeyArgs()) { + if (ClientVersion.fromProtoValue(req.getVersion()) + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getInitiateMultiPartUploadRequest().hasKeyArgs()) { KeyArgs keyArgs = req.getInitiateMultiPartUploadRequest().getKeyArgs(); if (keyArgs.hasVolumeName() && keyArgs.hasBucketName()) { diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadAbortRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadAbortRequest.java index 400291d7a448..4881ed542472 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadAbortRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadAbortRequest.java @@ -22,6 +22,7 @@ import java.nio.file.InvalidPathException; import java.util.Map; +import org.apache.hadoop.ozone.ClientVersion; import org.apache.hadoop.ozone.OzoneConsts; import org.apache.ratis.server.protocol.TermIndex; import org.apache.hadoop.ozone.om.helpers.BucketLayout; @@ -295,7 +296,8 @@ public static OMRequest disallowAbortMultiPartUploadWithECReplicationConfig( ) public static OMRequest blockMPUAbortWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { - if (req.getAbortMultiPartUploadRequest().hasKeyArgs()) { + if (ClientVersion.fromProtoValue(req.getVersion()) + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getAbortMultiPartUploadRequest().hasKeyArgs()) { KeyArgs keyArgs = req.getAbortMultiPartUploadRequest().getKeyArgs(); if (keyArgs.hasVolumeName() && keyArgs.hasBucketName()) { diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCommitPartRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCommitPartRequest.java index 1123b8dba7a6..795cda0fd284 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCommitPartRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCommitPartRequest.java @@ -19,6 +19,7 @@ package org.apache.hadoop.ozone.om.request.s3.multipart; import com.google.common.annotations.VisibleForTesting; +import org.apache.hadoop.ozone.ClientVersion; import org.apache.ratis.server.protocol.TermIndex; import org.apache.hadoop.ozone.OzoneConsts; import org.apache.hadoop.ozone.audit.OMAction; @@ -386,7 +387,8 @@ public static OMRequest disallowCommitMultiPartUploadWithECReplicationConfig( ) public static OMRequest blockMPUCommitWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { - if (req.getCommitMultiPartUploadRequest().hasKeyArgs()) { + if (ClientVersion.fromProtoValue(req.getVersion()) + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getCommitMultiPartUploadRequest().hasKeyArgs()) { KeyArgs keyArgs = req.getCommitMultiPartUploadRequest().getKeyArgs(); if (keyArgs.hasVolumeName() && keyArgs.hasBucketName()) { diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCompleteRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCompleteRequest.java index 1dab110e783a..e8677627c884 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCompleteRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCompleteRequest.java @@ -32,6 +32,7 @@ import java.util.function.BiFunction; import org.apache.hadoop.hdds.client.ReplicationConfig; +import org.apache.hadoop.ozone.ClientVersion; import org.apache.hadoop.ozone.om.OzoneConfigUtil; import org.apache.hadoop.ozone.om.request.file.OMDirectoryCreateRequestWithFSO; import org.apache.hadoop.ozone.om.request.file.OMFileRequest; @@ -748,7 +749,8 @@ private void updateCache(OMMetadataManager omMetadataManager, ) public static OMRequest blockMPUCompleteWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { - if (req.getCompleteMultiPartUploadRequest().hasKeyArgs()) { + if (ClientVersion.fromProtoValue(req.getVersion()) + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getCompleteMultiPartUploadRequest().hasKeyArgs()) { KeyArgs keyArgs = req.getCompleteMultiPartUploadRequest().getKeyArgs(); if (keyArgs.hasVolumeName() && keyArgs.hasBucketName()) { diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerRequestHandler.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerRequestHandler.java index 5b8365e5a75b..2d0464eb2521 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerRequestHandler.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerRequestHandler.java @@ -40,6 +40,7 @@ import org.apache.hadoop.hdds.client.ReplicationConfig; import org.apache.hadoop.hdds.scm.protocolPB.OzonePBHelper; import org.apache.hadoop.hdds.utils.FaultInjector; +import org.apache.hadoop.ozone.ClientVersion; import org.apache.hadoop.ozone.OzoneAcl; import org.apache.hadoop.ozone.util.PayloadUtils; import org.apache.hadoop.ozone.om.OzoneManager; @@ -636,7 +637,8 @@ private GetKeyInfoResponse getKeyInfo(GetKeyInfoRequest request, public static OMResponse disallowLookupKeyResponseWithECReplicationConfig( OMRequest req, OMResponse resp, ValidationContext ctx) throws ServiceException { - if (!resp.hasLookupKeyResponse()) { + if (ClientVersion.fromProtoValue(req.getVersion()) + .compareTo(ClientVersion.ERASURE_CODING_SUPPORT) >= 0 || !resp.hasLookupKeyResponse()) { return resp; } if (resp.getLookupKeyResponse().getKeyInfo().hasEcReplicationConfig()) { @@ -663,7 +665,8 @@ public static OMResponse disallowLookupKeyResponseWithECReplicationConfig( public static OMResponse disallowLookupKeyWithBucketLayout( OMRequest req, OMResponse resp, ValidationContext ctx) throws ServiceException, IOException { - if (!resp.hasLookupKeyResponse()) { + if (ClientVersion.fromProtoValue(req.getVersion()) + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0 || !resp.hasLookupKeyResponse()) { return resp; } KeyInfo keyInfo = resp.getLookupKeyResponse().getKeyInfo(); @@ -750,7 +753,8 @@ private ListKeysLightResponse listKeysLight(ListKeysRequest request) public static OMResponse disallowListKeysResponseWithECReplicationConfig( OMRequest req, OMResponse resp, ValidationContext ctx) throws ServiceException { - if (!resp.hasListKeysResponse()) { + if (ClientVersion.fromProtoValue(req.getVersion()) + .compareTo(ClientVersion.ERASURE_CODING_SUPPORT) >= 0 || !resp.hasListKeysResponse()) { return resp; } List keys = resp.getListKeysResponse().getKeyInfoList(); @@ -777,7 +781,8 @@ public static OMResponse disallowListKeysResponseWithECReplicationConfig( public static OMResponse disallowListKeysWithBucketLayout( OMRequest req, OMResponse resp, ValidationContext ctx) throws ServiceException, IOException { - if (!resp.hasListKeysResponse()) { + if (ClientVersion.fromProtoValue(req.getVersion()) + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0 || !resp.hasListKeysResponse()) { return resp; } @@ -838,7 +843,8 @@ private ListTrashResponse listTrash(ListTrashRequest request, public static OMResponse disallowListTrashWithECReplicationConfig( OMRequest req, OMResponse resp, ValidationContext ctx) throws ServiceException { - if (!resp.hasListTrashResponse()) { + if (ClientVersion.fromProtoValue(req.getVersion()) + .compareTo(ClientVersion.ERASURE_CODING_SUPPORT) >= 0 || !resp.hasListTrashResponse()) { return resp; } List repeatedKeys = @@ -868,7 +874,8 @@ public static OMResponse disallowListTrashWithECReplicationConfig( public static OMResponse disallowListTrashWithBucketLayout( OMRequest req, OMResponse resp, ValidationContext ctx) throws ServiceException, IOException { - if (!resp.hasListTrashResponse()) { + if (ClientVersion.fromProtoValue(req.getVersion()) + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0 || !resp.hasListTrashResponse()) { return resp; } @@ -1055,7 +1062,7 @@ private RefetchSecretKeyResponse refetchSecretKey() { public static OMResponse disallowGetFileStatusWithECReplicationConfig( OMRequest req, OMResponse resp, ValidationContext ctx) throws ServiceException { - if (!resp.hasGetFileStatusResponse()) { + if (ClientVersion.fromProtoValue(req.getVersion()).compareTo(ClientVersion.ERASURE_CODING_SUPPORT) >= 0 || !resp.hasGetFileStatusResponse()) { return resp; } if (resp.getGetFileStatusResponse().getStatus().getKeyInfo() @@ -1085,7 +1092,8 @@ public static OMResponse disallowGetFileStatusWithECReplicationConfig( public static OMResponse disallowGetFileStatusWithBucketLayout( OMRequest req, OMResponse resp, ValidationContext ctx) throws ServiceException, IOException { - if (!resp.hasGetFileStatusResponse()) { + if (ClientVersion.fromProtoValue(req.getVersion()).compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0 + || !resp.hasGetFileStatusResponse()) { return resp; } @@ -1134,7 +1142,8 @@ private LookupFileResponse lookupFile(LookupFileRequest request, public static OMResponse disallowLookupFileWithECReplicationConfig( OMRequest req, OMResponse resp, ValidationContext ctx) throws ServiceException { - if (!resp.hasLookupFileResponse()) { + if (ClientVersion.fromProtoValue(req.getVersion()) + .compareTo(ClientVersion.ERASURE_CODING_SUPPORT) >= 0 || !resp.hasLookupFileResponse()) { return resp; } if (resp.getLookupFileResponse().getKeyInfo().hasEcReplicationConfig()) { @@ -1162,7 +1171,8 @@ public static OMResponse disallowLookupFileWithECReplicationConfig( public static OMResponse disallowLookupFileWithBucketLayout( OMRequest req, OMResponse resp, ValidationContext ctx) throws ServiceException, IOException { - if (!resp.hasLookupFileResponse()) { + if (ClientVersion.fromProtoValue(req.getVersion()) + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0 || !resp.hasLookupFileResponse()) { return resp; } KeyInfo keyInfo = resp.getLookupFileResponse().getKeyInfo(); @@ -1244,7 +1254,8 @@ private ListStatusLightResponse listStatusLight( public static OMResponse disallowListStatusResponseWithECReplicationConfig( OMRequest req, OMResponse resp, ValidationContext ctx) throws ServiceException { - if (!resp.hasListStatusResponse()) { + if (ClientVersion.fromProtoValue(req.getVersion()) + .compareTo(ClientVersion.ERASURE_CODING_SUPPORT) >= 0 || !resp.hasListStatusResponse()) { return resp; } List statuses = @@ -1272,7 +1283,8 @@ public static OMResponse disallowListStatusResponseWithECReplicationConfig( public static OMResponse disallowListStatusResponseWithBucketLayout( OMRequest req, OMResponse resp, ValidationContext ctx) throws ServiceException, IOException { - if (!resp.hasListStatusResponse()) { + if (ClientVersion.fromProtoValue(req.getVersion()) + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0 || !resp.hasListStatusResponse()) { return resp; } From 0e2531738ef2875f70a42db0338baab8c07d25c2 Mon Sep 17 00:00:00 2001 From: Swaminathan Balachandran Date: Wed, 10 Jul 2024 12:09:28 -0700 Subject: [PATCH 2/3] HDDS-11132. Move all condition to another if block Change-Id: Ib3a1c2c86e2898deca55c81865b00fb4e61c98c1 --- .../request/bucket/OMBucketDeleteRequest.java | 16 ++--- .../file/OMDirectoryCreateRequest.java | 5 +- .../om/request/file/OMFileCreateRequest.java | 5 +- .../request/key/OMAllocateBlockRequest.java | 6 +- .../om/request/key/OMKeyCommitRequest.java | 5 +- .../om/request/key/OMKeyCreateRequest.java | 5 +- .../om/request/key/OMKeyDeleteRequest.java | 5 +- .../om/request/key/OMKeyRenameRequest.java | 5 +- .../om/request/key/OMKeysDeleteRequest.java | 5 +- .../om/request/key/OMKeysRenameRequest.java | 5 +- .../request/key/acl/OMKeyAddAclRequest.java | 5 +- .../key/acl/OMKeyRemoveAclRequest.java | 5 +- .../request/key/acl/OMKeySetAclRequest.java | 5 +- .../S3InitiateMultipartUploadRequest.java | 5 +- .../S3MultipartUploadAbortRequest.java | 5 +- .../S3MultipartUploadCommitPartRequest.java | 5 +- .../S3MultipartUploadCompleteRequest.java | 5 +- .../OzoneManagerRequestHandler.java | 68 +++++++++++++------ 18 files changed, 120 insertions(+), 45 deletions(-) diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketDeleteRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketDeleteRequest.java index add8a7c4709c..0d828f14cc01 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketDeleteRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketDeleteRequest.java @@ -289,16 +289,16 @@ private boolean bucketContainsSnapshotInCache( public static OMRequest blockBucketDeleteWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { if (ClientVersion.fromProtoValue(req.getVersion()) - .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0) { - DeleteBucketRequest request = req.getDeleteBucketRequest(); + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0) { + return req; + } + DeleteBucketRequest request = req.getDeleteBucketRequest(); - if (request.hasBucketName() && request.hasVolumeName()) { - BucketLayout bucketLayout = ctx.getBucketLayout( - request.getVolumeName(), request.getBucketName()); - bucketLayout.validateSupportedOperation(); - } + if (request.hasBucketName() && request.hasVolumeName()) { + BucketLayout bucketLayout = ctx.getBucketLayout( + request.getVolumeName(), request.getBucketName()); + bucketLayout.validateSupportedOperation(); } return req; - } } diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMDirectoryCreateRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMDirectoryCreateRequest.java index 0037d2cc65a3..a00cc0b29e1c 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMDirectoryCreateRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMDirectoryCreateRequest.java @@ -440,7 +440,10 @@ public static OMRequest disallowCreateDirectoryWithECReplicationConfig( public static OMRequest blockCreateDirectoryWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { if (ClientVersion.fromProtoValue(req.getVersion()) - .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getCreateDirectoryRequest().hasKeyArgs()) { + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0) { + return req; + } + if (req.getCreateDirectoryRequest().hasKeyArgs()) { KeyArgs keyArgs = req.getCreateDirectoryRequest().getKeyArgs(); if (keyArgs.hasVolumeName() && keyArgs.hasBucketName()) { diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMFileCreateRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMFileCreateRequest.java index add41e9dda62..83bdda6c04a7 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMFileCreateRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMFileCreateRequest.java @@ -433,7 +433,10 @@ public static OMRequest disallowCreateFileWithECReplicationConfig( public static OMRequest blockCreateFileWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { if (ClientVersion.fromProtoValue(req.getVersion()) - .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getCreateFileRequest().hasKeyArgs()) { + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0) { + return req; + } + if (req.getCreateFileRequest().hasKeyArgs()) { KeyArgs keyArgs = req.getCreateFileRequest().getKeyArgs(); diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMAllocateBlockRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMAllocateBlockRequest.java index 9033e0bfc945..564f48c83e95 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMAllocateBlockRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMAllocateBlockRequest.java @@ -306,7 +306,11 @@ public static OMRequest disallowAllocateBlockWithECReplicationConfig( public static OMRequest blockAllocateBlockWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { if (ClientVersion.fromProtoValue(req.getVersion()) - .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getAllocateBlockRequest().hasKeyArgs()) { + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0) { + return req; + } + + if (req.getAllocateBlockRequest().hasKeyArgs()) { KeyArgs keyArgs = req.getAllocateBlockRequest().getKeyArgs(); if (keyArgs.hasVolumeName() && keyArgs.hasBucketName()) { 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 a6be6f20d2fc..33afb1db07f7 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 @@ -471,7 +471,10 @@ public static OMRequest disallowCommitKeyWithECReplicationConfig( public static OMRequest blockCommitKeyWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { if (ClientVersion.fromProtoValue(req.getVersion()) - .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getCommitKeyRequest().hasKeyArgs()) { + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0) { + return req; + } + if (req.getCommitKeyRequest().hasKeyArgs()) { KeyArgs keyArgs = req.getCommitKeyRequest().getKeyArgs(); if (keyArgs.hasVolumeName() && keyArgs.hasBucketName()) { 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 2d87868744b1..017407c3d88b 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 @@ -432,7 +432,10 @@ public static OMRequest disallowCreateKeyWithECReplicationConfig( public static OMRequest blockCreateKeyWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { if (ClientVersion.fromProtoValue(req.getVersion()) - .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getCreateKeyRequest().hasKeyArgs()) { + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0) { + return req; + } + if (req.getCreateKeyRequest().hasKeyArgs()) { KeyArgs keyArgs = req.getCreateKeyRequest().getKeyArgs(); if (keyArgs.hasVolumeName() && keyArgs.hasBucketName()) { diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyDeleteRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyDeleteRequest.java index 57e7adb67b26..24f5c39c04d1 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyDeleteRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyDeleteRequest.java @@ -241,7 +241,10 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn public static OMRequest blockDeleteKeyWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { if (ClientVersion.fromProtoValue(req.getVersion()) - .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getDeleteKeyRequest().hasKeyArgs()) { + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0) { + return req; + } + if (req.getDeleteKeyRequest().hasKeyArgs()) { KeyArgs keyArgs = req.getDeleteKeyRequest().getKeyArgs(); if (keyArgs.hasVolumeName() && keyArgs.hasBucketName()) { diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRenameRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRenameRequest.java index 5210e7da516c..56515c54d532 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRenameRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRenameRequest.java @@ -278,7 +278,10 @@ private Map buildAuditMap( public static OMRequest blockRenameKeyWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { if (ClientVersion.fromProtoValue(req.getVersion()) - .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getRenameKeyRequest().hasKeyArgs()) { + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0) { + return req; + } + if (req.getRenameKeyRequest().hasKeyArgs()) { KeyArgs keyArgs = req.getRenameKeyRequest().getKeyArgs(); if (keyArgs.hasVolumeName() && keyArgs.hasBucketName()) { diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysDeleteRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysDeleteRequest.java index ac48b5ab9657..0e95119f84f1 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysDeleteRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysDeleteRequest.java @@ -359,7 +359,10 @@ protected static void addDeletedKeys(Map auditMap, public static OMRequest blockDeleteKeysWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { if (ClientVersion.fromProtoValue(req.getVersion()) - .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getDeleteKeysRequest().hasDeleteKeys()) { + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0) { + return req; + } + if (req.getDeleteKeysRequest().hasDeleteKeys()) { DeleteKeyArgs keyArgs = req.getDeleteKeysRequest().getDeleteKeys(); if (keyArgs.hasVolumeName() && keyArgs.hasBucketName()) { diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysRenameRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysRenameRequest.java index 6b631472111a..8ea13d1a721e 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysRenameRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeysRenameRequest.java @@ -305,7 +305,10 @@ private Map buildAuditMap(Map auditMap, public static OMRequest blockRenameKeysWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { if (ClientVersion.fromProtoValue(req.getVersion()) - .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getRenameKeysRequest().hasRenameKeysArgs()) { + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0) { + return req; + } + if (req.getRenameKeysRequest().hasRenameKeysArgs()) { RenameKeysArgs keyArgs = req.getRenameKeysRequest().getRenameKeysArgs(); if (keyArgs.hasVolumeName() && keyArgs.hasBucketName()) { diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeyAddAclRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeyAddAclRequest.java index 6060809a8afa..8a111b078a79 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeyAddAclRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeyAddAclRequest.java @@ -173,7 +173,10 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn public static OMRequest blockAddAclWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { if (ClientVersion.fromProtoValue(req.getVersion()) - .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getAddAclRequest().hasObj()) { + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0) { + return req; + } + if (req.getAddAclRequest().hasObj()) { OzoneObj obj = OzoneObjInfo.fromProtobuf(req.getAddAclRequest().getObj()); String path = obj.getPath(); diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeyRemoveAclRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeyRemoveAclRequest.java index 100091b1a107..634152cc3a9f 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeyRemoveAclRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeyRemoveAclRequest.java @@ -174,7 +174,10 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn public static OMRequest blockRemoveAclWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { if (ClientVersion.fromProtoValue(req.getVersion()) - .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getRemoveAclRequest().hasObj()) { + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0) { + return req; + } + if (req.getRemoveAclRequest().hasObj()) { OzoneObj obj = OzoneObjInfo.fromProtobuf(req.getRemoveAclRequest().getObj()); String path = obj.getPath(); diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeySetAclRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeySetAclRequest.java index ed7b01e985f3..c6f7f015a1cf 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeySetAclRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/acl/OMKeySetAclRequest.java @@ -170,7 +170,10 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, TermIn public static OMRequest blockSetAclWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { if (ClientVersion.fromProtoValue(req.getVersion()) - .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getSetAclRequest().hasObj()) { + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0) { + return req; + } + if (req.getSetAclRequest().hasObj()) { OzoneObj obj = OzoneObjInfo.fromProtobuf(req.getSetAclRequest().getObj()); String path = obj.getPath(); diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3InitiateMultipartUploadRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3InitiateMultipartUploadRequest.java index 72c325c37843..269adea42b55 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3InitiateMultipartUploadRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3InitiateMultipartUploadRequest.java @@ -328,7 +328,10 @@ protected void logResult(OzoneManager ozoneManager, public static OMRequest blockInitiateMPUWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { if (ClientVersion.fromProtoValue(req.getVersion()) - .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getInitiateMultiPartUploadRequest().hasKeyArgs()) { + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0) { + return req; + } + if (req.getInitiateMultiPartUploadRequest().hasKeyArgs()) { KeyArgs keyArgs = req.getInitiateMultiPartUploadRequest().getKeyArgs(); if (keyArgs.hasVolumeName() && keyArgs.hasBucketName()) { diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadAbortRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadAbortRequest.java index 4881ed542472..f3b614a3bb13 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadAbortRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadAbortRequest.java @@ -297,7 +297,10 @@ public static OMRequest disallowAbortMultiPartUploadWithECReplicationConfig( public static OMRequest blockMPUAbortWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { if (ClientVersion.fromProtoValue(req.getVersion()) - .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getAbortMultiPartUploadRequest().hasKeyArgs()) { + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0) { + return req; + } + if (req.getAbortMultiPartUploadRequest().hasKeyArgs()) { KeyArgs keyArgs = req.getAbortMultiPartUploadRequest().getKeyArgs(); if (keyArgs.hasVolumeName() && keyArgs.hasBucketName()) { diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCommitPartRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCommitPartRequest.java index 795cda0fd284..01a990a6245f 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCommitPartRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCommitPartRequest.java @@ -388,7 +388,10 @@ public static OMRequest disallowCommitMultiPartUploadWithECReplicationConfig( public static OMRequest blockMPUCommitWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { if (ClientVersion.fromProtoValue(req.getVersion()) - .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getCommitMultiPartUploadRequest().hasKeyArgs()) { + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0) { + return req; + } + if (req.getCommitMultiPartUploadRequest().hasKeyArgs()) { KeyArgs keyArgs = req.getCommitMultiPartUploadRequest().getKeyArgs(); if (keyArgs.hasVolumeName() && keyArgs.hasBucketName()) { diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCompleteRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCompleteRequest.java index e8677627c884..e8b5b18e14af 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCompleteRequest.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/s3/multipart/S3MultipartUploadCompleteRequest.java @@ -750,7 +750,10 @@ private void updateCache(OMMetadataManager omMetadataManager, public static OMRequest blockMPUCompleteWithBucketLayoutFromOldClient( OMRequest req, ValidationContext ctx) throws IOException { if (ClientVersion.fromProtoValue(req.getVersion()) - .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) < 0 && req.getCompleteMultiPartUploadRequest().hasKeyArgs()) { + .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0) { + return req; + } + if (req.getCompleteMultiPartUploadRequest().hasKeyArgs()) { KeyArgs keyArgs = req.getCompleteMultiPartUploadRequest().getKeyArgs(); if (keyArgs.hasVolumeName() && keyArgs.hasBucketName()) { diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerRequestHandler.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerRequestHandler.java index 2d0464eb2521..5c4387db9a16 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerRequestHandler.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerRequestHandler.java @@ -637,8 +637,10 @@ private GetKeyInfoResponse getKeyInfo(GetKeyInfoRequest request, public static OMResponse disallowLookupKeyResponseWithECReplicationConfig( OMRequest req, OMResponse resp, ValidationContext ctx) throws ServiceException { - if (ClientVersion.fromProtoValue(req.getVersion()) - .compareTo(ClientVersion.ERASURE_CODING_SUPPORT) >= 0 || !resp.hasLookupKeyResponse()) { + if (ClientVersion.fromProtoValue(req.getVersion()).compareTo(ClientVersion.ERASURE_CODING_SUPPORT) >= 0) { + return resp; + } + if (!resp.hasLookupKeyResponse()) { return resp; } if (resp.getLookupKeyResponse().getKeyInfo().hasEcReplicationConfig()) { @@ -665,6 +667,9 @@ public static OMResponse disallowLookupKeyResponseWithECReplicationConfig( public static OMResponse disallowLookupKeyWithBucketLayout( OMRequest req, OMResponse resp, ValidationContext ctx) throws ServiceException, IOException { + if (ClientVersion.fromProtoValue(req.getVersion()).compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0) { + return resp; + } if (ClientVersion.fromProtoValue(req.getVersion()) .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0 || !resp.hasLookupKeyResponse()) { return resp; @@ -753,8 +758,10 @@ private ListKeysLightResponse listKeysLight(ListKeysRequest request) public static OMResponse disallowListKeysResponseWithECReplicationConfig( OMRequest req, OMResponse resp, ValidationContext ctx) throws ServiceException { - if (ClientVersion.fromProtoValue(req.getVersion()) - .compareTo(ClientVersion.ERASURE_CODING_SUPPORT) >= 0 || !resp.hasListKeysResponse()) { + if (ClientVersion.fromProtoValue(req.getVersion()).compareTo(ClientVersion.ERASURE_CODING_SUPPORT) >= 0) { + return resp; + } + if (!resp.hasListKeysResponse()) { return resp; } List keys = resp.getListKeysResponse().getKeyInfoList(); @@ -781,8 +788,10 @@ public static OMResponse disallowListKeysResponseWithECReplicationConfig( public static OMResponse disallowListKeysWithBucketLayout( OMRequest req, OMResponse resp, ValidationContext ctx) throws ServiceException, IOException { - if (ClientVersion.fromProtoValue(req.getVersion()) - .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0 || !resp.hasListKeysResponse()) { + if (ClientVersion.fromProtoValue(req.getVersion()).compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0) { + return resp; + } + if (!resp.hasListKeysResponse()) { return resp; } @@ -843,8 +852,10 @@ private ListTrashResponse listTrash(ListTrashRequest request, public static OMResponse disallowListTrashWithECReplicationConfig( OMRequest req, OMResponse resp, ValidationContext ctx) throws ServiceException { - if (ClientVersion.fromProtoValue(req.getVersion()) - .compareTo(ClientVersion.ERASURE_CODING_SUPPORT) >= 0 || !resp.hasListTrashResponse()) { + if (ClientVersion.fromProtoValue(req.getVersion()).compareTo(ClientVersion.ERASURE_CODING_SUPPORT) >= 0) { + return resp; + } + if (!resp.hasListTrashResponse()) { return resp; } List repeatedKeys = @@ -874,8 +885,10 @@ public static OMResponse disallowListTrashWithECReplicationConfig( public static OMResponse disallowListTrashWithBucketLayout( OMRequest req, OMResponse resp, ValidationContext ctx) throws ServiceException, IOException { - if (ClientVersion.fromProtoValue(req.getVersion()) - .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0 || !resp.hasListTrashResponse()) { + if (ClientVersion.fromProtoValue(req.getVersion()).compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0) { + return resp; + } + if (!resp.hasListTrashResponse()) { return resp; } @@ -1062,7 +1075,10 @@ private RefetchSecretKeyResponse refetchSecretKey() { public static OMResponse disallowGetFileStatusWithECReplicationConfig( OMRequest req, OMResponse resp, ValidationContext ctx) throws ServiceException { - if (ClientVersion.fromProtoValue(req.getVersion()).compareTo(ClientVersion.ERASURE_CODING_SUPPORT) >= 0 || !resp.hasGetFileStatusResponse()) { + if (ClientVersion.fromProtoValue(req.getVersion()).compareTo(ClientVersion.ERASURE_CODING_SUPPORT) >= 0) { + return resp; + } + if (!resp.hasGetFileStatusResponse()) { return resp; } if (resp.getGetFileStatusResponse().getStatus().getKeyInfo() @@ -1092,8 +1108,10 @@ public static OMResponse disallowGetFileStatusWithECReplicationConfig( public static OMResponse disallowGetFileStatusWithBucketLayout( OMRequest req, OMResponse resp, ValidationContext ctx) throws ServiceException, IOException { - if (ClientVersion.fromProtoValue(req.getVersion()).compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0 - || !resp.hasGetFileStatusResponse()) { + if (ClientVersion.fromProtoValue(req.getVersion()).compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0) { + return resp; + } + if (!resp.hasGetFileStatusResponse()) { return resp; } @@ -1142,8 +1160,10 @@ private LookupFileResponse lookupFile(LookupFileRequest request, public static OMResponse disallowLookupFileWithECReplicationConfig( OMRequest req, OMResponse resp, ValidationContext ctx) throws ServiceException { - if (ClientVersion.fromProtoValue(req.getVersion()) - .compareTo(ClientVersion.ERASURE_CODING_SUPPORT) >= 0 || !resp.hasLookupFileResponse()) { + if (ClientVersion.fromProtoValue(req.getVersion()).compareTo(ClientVersion.ERASURE_CODING_SUPPORT) >= 0) { + return resp; + } + if (!resp.hasLookupFileResponse()) { return resp; } if (resp.getLookupFileResponse().getKeyInfo().hasEcReplicationConfig()) { @@ -1171,8 +1191,10 @@ public static OMResponse disallowLookupFileWithECReplicationConfig( public static OMResponse disallowLookupFileWithBucketLayout( OMRequest req, OMResponse resp, ValidationContext ctx) throws ServiceException, IOException { - if (ClientVersion.fromProtoValue(req.getVersion()) - .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0 || !resp.hasLookupFileResponse()) { + if (ClientVersion.fromProtoValue(req.getVersion()).compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0) { + return resp; + } + if (!resp.hasLookupFileResponse()) { return resp; } KeyInfo keyInfo = resp.getLookupFileResponse().getKeyInfo(); @@ -1254,8 +1276,10 @@ private ListStatusLightResponse listStatusLight( public static OMResponse disallowListStatusResponseWithECReplicationConfig( OMRequest req, OMResponse resp, ValidationContext ctx) throws ServiceException { - if (ClientVersion.fromProtoValue(req.getVersion()) - .compareTo(ClientVersion.ERASURE_CODING_SUPPORT) >= 0 || !resp.hasListStatusResponse()) { + if (ClientVersion.fromProtoValue(req.getVersion()).compareTo(ClientVersion.ERASURE_CODING_SUPPORT) >= 0) { + return resp; + } + if (!resp.hasListStatusResponse()) { return resp; } List statuses = @@ -1283,8 +1307,10 @@ public static OMResponse disallowListStatusResponseWithECReplicationConfig( public static OMResponse disallowListStatusResponseWithBucketLayout( OMRequest req, OMResponse resp, ValidationContext ctx) throws ServiceException, IOException { - if (ClientVersion.fromProtoValue(req.getVersion()) - .compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0 || !resp.hasListStatusResponse()) { + if (ClientVersion.fromProtoValue(req.getVersion()).compareTo(ClientVersion.BUCKET_LAYOUT_SUPPORT) >= 0) { + return resp; + } + if (!resp.hasListStatusResponse()) { return resp; } From baffb11c0d74c00846635b818015eab508af4e7f Mon Sep 17 00:00:00 2001 From: Swaminathan Balachandran Date: Wed, 10 Jul 2024 15:31:10 -0700 Subject: [PATCH 3/3] HDDS-11132. Add unit test Change-Id: Ib3f891f60006afed10779d45fee161e66a294379 --- ...ManagerProtocolClientSideTranslatorPB.java | 7 +- ...va => TestBucketLayoutWithAllClients.java} | 81 ++++++++++++++++++- 2 files changed, 84 insertions(+), 4 deletions(-) rename hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/{TestBucketLayoutWithOlderClient.java => TestBucketLayoutWithAllClients.java} (53%) diff --git a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocolPB/OzoneManagerProtocolClientSideTranslatorPB.java b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocolPB/OzoneManagerProtocolClientSideTranslatorPB.java index e6a85566fe2b..1420e1cfb070 100644 --- a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocolPB/OzoneManagerProtocolClientSideTranslatorPB.java +++ b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocolPB/OzoneManagerProtocolClientSideTranslatorPB.java @@ -290,11 +290,13 @@ public void close() throws IOException { transport.close(); } + /** * Returns a OMRequest builder with specified type. * @param cmdType type of the request */ - private OMRequest.Builder createOMRequest(Type cmdType) { + @VisibleForTesting + public OMRequest.Builder createOMRequest(Type cmdType) { return OMRequest.newBuilder() .setCmdType(cmdType) .setVersion(ClientVersion.CURRENT_VERSION) @@ -307,7 +309,8 @@ private OMRequest.Builder createOMRequest(Type cmdType) { * @return response from OM * @throws IOException thrown if any Protobuf service exception occurs */ - private OMResponse submitRequest(OMRequest omRequest) + @VisibleForTesting + public OMResponse submitRequest(OMRequest omRequest) throws IOException { OMRequest.Builder builder = OMRequest.newBuilder(omRequest); // Insert S3 Authentication information for each request. diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestBucketLayoutWithOlderClient.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestBucketLayoutWithAllClients.java similarity index 53% rename from hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestBucketLayoutWithOlderClient.java rename to hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestBucketLayoutWithAllClients.java index 73596781cc64..368d06711d6d 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestBucketLayoutWithOlderClient.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestBucketLayoutWithAllClients.java @@ -16,6 +16,7 @@ */ package org.apache.hadoop.ozone.om; +import com.google.protobuf.ServiceException; import org.apache.hadoop.hdds.utils.IOUtils; import org.apache.hadoop.ozone.MiniOzoneCluster; import org.apache.hadoop.ozone.ClientVersion; @@ -23,29 +24,39 @@ import org.apache.hadoop.hdds.conf.OzoneConfiguration; import org.apache.hadoop.ozone.client.OzoneBucket; import org.apache.hadoop.ozone.client.OzoneClient; +import org.apache.hadoop.ozone.client.rpc.RpcClient; import org.apache.hadoop.ozone.om.helpers.BucketLayout; import org.apache.hadoop.ozone.om.helpers.OmBucketInfo; +import org.apache.hadoop.ozone.om.protocolPB.OzoneManagerProtocolClientSideTranslatorPB; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos; import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Timeout; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; import java.io.IOException; +import java.util.Arrays; import java.util.UUID; +import java.util.function.Function; +import java.util.stream.Stream; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; /** - * Tests to verify bucket ops with older version client. + * Tests to verify bucket ops with different client versions. */ @Timeout(1200) -public class TestBucketLayoutWithOlderClient { +public class TestBucketLayoutWithAllClients { private static MiniOzoneCluster cluster = null; private static OzoneConfiguration conf; private static OzoneClient client; + private static OzoneManagerProtocolClientSideTranslatorPB ozoneManagerClient; /** * Create a MiniDFSCluster for testing. @@ -61,6 +72,21 @@ public static void init() throws Exception { cluster = MiniOzoneCluster.newBuilder(conf).build(); cluster.waitForClusterToBeReady(); client = cluster.newClient(); + ozoneManagerClient = + (OzoneManagerProtocolClientSideTranslatorPB) + ((RpcClient) client.getObjectStore().getClientProxy()).getOzoneManagerClient(); + } + + private static Stream allClientVersions() { + return Arrays.stream(ClientVersion.values()).flatMap( + clientVersion -> Stream.of(Arguments.of(clientVersion, BucketLayout.FILE_SYSTEM_OPTIMIZED), + Arguments.of(clientVersion, BucketLayout.OBJECT_STORE))); + } + + private OzoneManagerProtocolProtos.OMRequest.Builder getOmRequest(OzoneManagerProtocolProtos.Type type, + ClientVersion clientVersion) { + return ozoneManagerClient.createOMRequest(type) + .setVersion(clientVersion.toProtoValue()); } @Test @@ -109,6 +135,57 @@ public void testCreateBucketWithOlderClient() throws Exception { assertEquals(BucketLayout.LEGACY, bucketInfo.getBucketLayout()); } + private OzoneManagerProtocolProtos.KeyArgs getKeyArgs(String volume, String bucket) { + return OzoneManagerProtocolProtos.KeyArgs.newBuilder() + .setVolumeName(volume) + .setBucketName(bucket).setKeyName("a/b/c/key") + .build(); + } + + private OzoneManagerProtocolProtos.Status createKey(String volume, String bucket, ClientVersion clientVersion, + OzoneManagerProtocolProtos.Status expectedStatus) throws IOException { + OzoneManagerProtocolProtos.CreateFileRequest createFileRequest = + OzoneManagerProtocolProtos.CreateFileRequest.newBuilder() + .setKeyArgs(getKeyArgs(volume, bucket)) + .setIsOverwrite(true) + .setIsRecursive(true).build(); + OzoneManagerProtocolProtos.OMRequest request = getOmRequest(OzoneManagerProtocolProtos.Type.CreateFile, + clientVersion) + .setCreateFileRequest(createFileRequest).build(); + OzoneManagerProtocolProtos.OMResponse + omResponse = ozoneManagerClient.submitRequest(request); + return expectedStatus; + } + + private void performOpWithLatestClientVersion(ClientVersion clientVersion, + Function operation, + OzoneManagerProtocolProtos.Status expectedStatusWithClientVersion) { + Assertions.assertEquals(expectedStatusWithClientVersion, operation.apply(clientVersion)); + if (!operation.apply(clientVersion).equals(OzoneManagerProtocolProtos.Status.OK)) { + operation.apply(ClientVersion.CURRENT); + } + + } + @ParameterizedTest + @MethodSource("allClientVersions") + public void testBucketOperationsOnNonLegacyBucket(ClientVersion version, BucketLayout bucketLayout) + throws IOException, ServiceException { + String suffix = version.toProtoValue() + "-" + + bucketLayout.toString().toLowerCase().replaceAll("_","-"); + String volume = "volume-" + suffix; + String bucket = "bucket-" + suffix; + OzoneBucket ozoneBucket = TestDataUtil.createVolumeAndBucket(client, volume, bucket, bucketLayout); + Assertions.assertEquals(bucketLayout, + client.getObjectStore().getVolume(volume).getBucket(bucket).getBucketLayout()); + // Create key + OzoneManagerProtocolProtos.Status expectedStatus = + version.toProtoValue() >= ClientVersion.BUCKET_LAYOUT_SUPPORT.toProtoValue() ? + OzoneManagerProtocolProtos.Status.OK : OzoneManagerProtocolProtos.Status.NOT_SUPPORTED_OPERATION; + performOpWithLatestClientVersion(createKey(volume, bucket, version, expectedStatus)); + + + } + /** * Shutdown MiniDFSCluster. */