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