You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by bh...@apache.org on 2021/11/17 18:17:30 UTC
[ozone] branch master updated: HDDS-5980. Get on a key which is created/overwrite through MPU on a TDE bucket, the data does not match with uploaded data. (#2844)
This is an automated email from the ASF dual-hosted git repository.
bharat 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 4348d1d HDDS-5980. Get on a key which is created/overwrite through MPU on a TDE bucket, the data does not match with uploaded data. (#2844)
4348d1d is described below
commit 4348d1d5e3fda7236a6495e29b72a46c176ada33
Author: Bharat Viswanadham <bh...@apache.org>
AuthorDate: Wed Nov 17 10:17:15 2021 -0800
HDDS-5980. Get on a key which is created/overwrite through MPU on a TDE bucket, the data does not match with uploaded data. (#2844)
---
.../java/org/apache/hadoop/ozone/om/helpers/OmKeyInfo.java | 8 ++++++++
.../hadoop/ozone/client/rpc/TestOzoneAtRestEncryption.java | 11 +++++++++++
.../s3/multipart/S3MultipartUploadCompleteRequest.java | 11 +++++++++++
3 files changed, 30 insertions(+)
diff --git a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmKeyInfo.java b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmKeyInfo.java
index 4282f33..65ea918 100644
--- a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmKeyInfo.java
+++ b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmKeyInfo.java
@@ -701,6 +701,14 @@ public final class OmKeyInfo extends WithParentObjectId {
this.encInfo = null;
}
+ /**
+ * Set the file encryption info.
+ * @param fileEncryptionInfo
+ */
+ public void setFileEncryptionInfo(FileEncryptionInfo fileEncryptionInfo) {
+ this.encInfo = fileEncryptionInfo;
+ }
+
public String getPath() {
if (StringUtils.isBlank(getFileName())) {
return getKeyName();
diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneAtRestEncryption.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneAtRestEncryption.java
index 7a714a2..89d502c 100644
--- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneAtRestEncryption.java
+++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneAtRestEncryption.java
@@ -412,6 +412,17 @@ public class TestOzoneAtRestEncryption {
testMultipartUploadWithEncryption(bucket, 2);
}
+ @Test
+ public void testMPUwithThreePartsOverride() throws Exception {
+ String volumeName = UUID.randomUUID().toString();
+ String bucketName = UUID.randomUUID().toString();
+ OzoneBucket bucket = createVolumeAndBucket(volumeName, bucketName);
+ testMultipartUploadWithEncryption(bucket, 3);
+
+ // override the key and check content
+ testMultipartUploadWithEncryption(bucket, 3);
+ }
+
@Test
public void testMPUwithLinkBucket() throws Exception {
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 7631c0c..dde9503 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
@@ -348,10 +348,21 @@ public class S3MultipartUploadCompleteRequest extends OMKeyRequest {
updatePrefixFSOInfo(dbOpenKeyInfo, builder);
omKeyInfo = builder.build();
} else {
+ OmKeyInfo dbOpenKeyInfo = getOmKeyInfoFromOpenKeyTable(multipartOpenKey,
+ keyName, omMetadataManager);
+
// Already a version exists, so we should add it as a new version.
// But now as versioning is not supported, just following the commit
// key approach. When versioning support comes, then we can uncomment
// below code keyInfo.addNewVersion(locations);
+
+ // As right now versioning is not supported, we can set encryption info
+ // at KeyInfo level, but once we start supporting versioning,
+ // encryption info needs to be set at KeyLocation level, as each version
+ // will have it's own file encryption info.
+ if (dbOpenKeyInfo.getFileEncryptionInfo() != null) {
+ omKeyInfo.setFileEncryptionInfo(dbOpenKeyInfo.getFileEncryptionInfo());
+ }
omKeyInfo.updateLocationInfoList(partLocationInfos, true, true);
omKeyInfo.setModificationTime(keyArgs.getModificationTime());
omKeyInfo.setDataSize(dataSize);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ozone.apache.org
For additional commands, e-mail: commits-help@ozone.apache.org