You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ozone.apache.org by GitBox <gi...@apache.org> on 2021/03/10 01:53:27 UTC

[GitHub] [ozone] rakeshadr opened a new pull request #2016: HDDS-4924. [FSO]S3Multipart: Implement OzoneBucket#listParts

rakeshadr opened a new pull request #2016:
URL: https://github.com/apache/ozone/pull/2016


   ## What changes were proposed in this pull request?
   
   This task is to implement prefix based FSO for the OzoneBucket#listParts API.
   
   ## What is the link to the Apache JIRA
   
   https://issues.apache.org/jira/browse/HDDS-4924
   
   ## How was this patch tested?
   
   Added UTs
   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org


[GitHub] [ozone] linyiqun commented on a change in pull request #2016: HDDS-4924. [FSO]S3Multipart: Implement OzoneBucket#listParts

Posted by GitBox <gi...@apache.org>.
linyiqun commented on a change in pull request #2016:
URL: https://github.com/apache/ozone/pull/2016#discussion_r591149299



##########
File path: hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneClientMultipartUploadV1.java
##########
@@ -566,6 +569,212 @@ public void testAbortUploadSuccessWithParts() throws Exception {
     // not making any assertion for the same.
   }
 
+  @Test
+  public void testListMultipartUploadParts() throws Exception {
+    String volumeName = UUID.randomUUID().toString();
+    String bucketName = UUID.randomUUID().toString();
+    String parentDir = "a/b/c/d/e/f";
+    String keyName = parentDir + UUID.randomUUID().toString();
+
+    store.createVolume(volumeName);
+    OzoneVolume volume = store.getVolume(volumeName);
+    volume.createBucket(bucketName);
+    OzoneBucket bucket = volume.getBucket(bucketName);
+
+    Map<Integer, String> partsMap = new TreeMap<>();
+    String uploadID = initiateMultipartUpload(bucket, keyName, STAND_ALONE,
+        ONE);
+    String partName1 = uploadPart(bucket, keyName, uploadID, 1,
+        generateData(OzoneConsts.OM_MULTIPART_MIN_SIZE, (byte)97));
+    partsMap.put(1, partName1);

Review comment:
       Can we additionally check if the partName returned is the expected value, like
   ``` 
   Assert.assertEquals("/volumeName/bucketName....", partName1)
   ```




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org


[GitHub] [ozone] linyiqun commented on a change in pull request #2016: HDDS-4924. [FSO]S3Multipart: Implement OzoneBucket#listParts

Posted by GitBox <gi...@apache.org>.
linyiqun commented on a change in pull request #2016:
URL: https://github.com/apache/ozone/pull/2016#discussion_r591497081



##########
File path: hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneClientMultipartUploadV1.java
##########
@@ -566,6 +569,212 @@ public void testAbortUploadSuccessWithParts() throws Exception {
     // not making any assertion for the same.
   }
 
+  @Test
+  public void testListMultipartUploadParts() throws Exception {
+    String volumeName = UUID.randomUUID().toString();
+    String bucketName = UUID.randomUUID().toString();
+    String parentDir = "a/b/c/d/e/f";
+    String keyName = parentDir + UUID.randomUUID().toString();
+
+    store.createVolume(volumeName);
+    OzoneVolume volume = store.getVolume(volumeName);
+    volume.createBucket(bucketName);
+    OzoneBucket bucket = volume.getBucket(bucketName);
+
+    Map<Integer, String> partsMap = new TreeMap<>();
+    String uploadID = initiateMultipartUpload(bucket, keyName, STAND_ALONE,
+        ONE);
+    String partName1 = uploadPart(bucket, keyName, uploadID, 1,
+        generateData(OzoneConsts.OM_MULTIPART_MIN_SIZE, (byte)97));
+    partsMap.put(1, partName1);

Review comment:
       My thought is to get the part name stored in omMultipartKeyInfo and reconstruct the full part name with volume, bucket , key name. And assert this full part key with the name we get from listParts call.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org


[GitHub] [ozone] rakeshadr commented on a change in pull request #2016: HDDS-4924. [FSO]S3Multipart: Implement OzoneBucket#listParts

Posted by GitBox <gi...@apache.org>.
rakeshadr commented on a change in pull request #2016:
URL: https://github.com/apache/ozone/pull/2016#discussion_r591193687



##########
File path: hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneClientMultipartUploadV1.java
##########
@@ -566,6 +569,212 @@ public void testAbortUploadSuccessWithParts() throws Exception {
     // not making any assertion for the same.
   }
 
+  @Test
+  public void testListMultipartUploadParts() throws Exception {
+    String volumeName = UUID.randomUUID().toString();
+    String bucketName = UUID.randomUUID().toString();
+    String parentDir = "a/b/c/d/e/f";
+    String keyName = parentDir + UUID.randomUUID().toString();
+
+    store.createVolume(volumeName);
+    OzoneVolume volume = store.getVolume(volumeName);
+    volume.createBucket(bucketName);
+    OzoneBucket bucket = volume.getBucket(bucketName);
+
+    Map<Integer, String> partsMap = new TreeMap<>();
+    String uploadID = initiateMultipartUpload(bucket, keyName, STAND_ALONE,
+        ONE);
+    String partName1 = uploadPart(bucket, keyName, uploadID, 1,
+        generateData(OzoneConsts.OM_MULTIPART_MIN_SIZE, (byte)97));
+    partsMap.put(1, partName1);

Review comment:
       Thanks @linyiqun for the review comments.
   
   Yes, I'm doing partName assertion. Like we saw, it is storing `partName` in the `partsMap.put(1, partName1);` and down the line it is asserting partName against returned `ozoneMultipartUploadPartListParts`. Hope thats fine for you? Am I missing something?
   
       Assert.assertEquals(partsMap.get(ozoneMultipartUploadPartListParts
               .getPartInfoList().get(0).getPartNumber()),
           ozoneMultipartUploadPartListParts.getPartInfoList().get(0)
               .getPartName());
       Assert.assertEquals(partsMap.get(ozoneMultipartUploadPartListParts
               .getPartInfoList().get(1).getPartNumber()),
           ozoneMultipartUploadPartListParts.getPartInfoList().get(1)
               .getPartName());
       Assert.assertEquals(partsMap.get(ozoneMultipartUploadPartListParts
               .getPartInfoList().get(2).getPartNumber()),
           ozoneMultipartUploadPartListParts.getPartInfoList().get(2)
               .getPartName());
   
   




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org


[GitHub] [ozone] linyiqun commented on a change in pull request #2016: HDDS-4924. [FSO]S3Multipart: Implement OzoneBucket#listParts

Posted by GitBox <gi...@apache.org>.
linyiqun commented on a change in pull request #2016:
URL: https://github.com/apache/ozone/pull/2016#discussion_r591289489



##########
File path: hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneClientMultipartUploadV1.java
##########
@@ -566,6 +569,212 @@ public void testAbortUploadSuccessWithParts() throws Exception {
     // not making any assertion for the same.
   }
 
+  @Test
+  public void testListMultipartUploadParts() throws Exception {
+    String volumeName = UUID.randomUUID().toString();
+    String bucketName = UUID.randomUUID().toString();
+    String parentDir = "a/b/c/d/e/f";
+    String keyName = parentDir + UUID.randomUUID().toString();
+
+    store.createVolume(volumeName);
+    OzoneVolume volume = store.getVolume(volumeName);
+    volume.createBucket(bucketName);
+    OzoneBucket bucket = volume.getBucket(bucketName);
+
+    Map<Integer, String> partsMap = new TreeMap<>();
+    String uploadID = initiateMultipartUpload(bucket, keyName, STAND_ALONE,
+        ONE);
+    String partName1 = uploadPart(bucket, keyName, uploadID, 1,
+        generateData(OzoneConsts.OM_MULTIPART_MIN_SIZE, (byte)97));
+    partsMap.put(1, partName1);

Review comment:
       @rakeshadr , I have saw above assert check . But it would be great if we could have additional assert for the value of part Name, so that we can directly know the value/format of v1 layout part name.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org


[GitHub] [ozone] linyiqun commented on a change in pull request #2016: HDDS-4924. [FSO]S3Multipart: Implement OzoneBucket#listParts

Posted by GitBox <gi...@apache.org>.
linyiqun commented on a change in pull request #2016:
URL: https://github.com/apache/ozone/pull/2016#discussion_r591289489



##########
File path: hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneClientMultipartUploadV1.java
##########
@@ -566,6 +569,212 @@ public void testAbortUploadSuccessWithParts() throws Exception {
     // not making any assertion for the same.
   }
 
+  @Test
+  public void testListMultipartUploadParts() throws Exception {
+    String volumeName = UUID.randomUUID().toString();
+    String bucketName = UUID.randomUUID().toString();
+    String parentDir = "a/b/c/d/e/f";
+    String keyName = parentDir + UUID.randomUUID().toString();
+
+    store.createVolume(volumeName);
+    OzoneVolume volume = store.getVolume(volumeName);
+    volume.createBucket(bucketName);
+    OzoneBucket bucket = volume.getBucket(bucketName);
+
+    Map<Integer, String> partsMap = new TreeMap<>();
+    String uploadID = initiateMultipartUpload(bucket, keyName, STAND_ALONE,
+        ONE);
+    String partName1 = uploadPart(bucket, keyName, uploadID, 1,
+        generateData(OzoneConsts.OM_MULTIPART_MIN_SIZE, (byte)97));
+    partsMap.put(1, partName1);

Review comment:
       @rakeshadr , I have saw above assert check . But it would be great if we could have additional assert for the value of part Name, so that we can directly know the value/format of part name.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org


[GitHub] [ozone] rakeshadr commented on pull request #2016: HDDS-4924. [FSO]S3Multipart: Implement OzoneBucket#listParts

Posted by GitBox <gi...@apache.org>.
rakeshadr commented on pull request #2016:
URL: https://github.com/apache/ozone/pull/2016#issuecomment-795700384


   > +1. Thanks @rakeshadr for addressing the comment.
   
   Thanks @linyiqun for the review comments. I will merge it to the feature branch.


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org


[GitHub] [ozone] linyiqun edited a comment on pull request #2016: HDDS-4924. [FSO]S3Multipart: Implement OzoneBucket#listParts

Posted by GitBox <gi...@apache.org>.
linyiqun edited a comment on pull request #2016:
URL: https://github.com/apache/ozone/pull/2016#issuecomment-795027194


   The description of the JIRA
   >For example, user give keyName is a/b/c/d/multipartKeyName and assume objectID for the parent a/b/c/d  is 1027 and clientID is 4445890.
   Now, in DB it stores like 1027/multipartKeyName4445890.
   User expects partName like, /volName/bucketName/a/b/c/d/multipartKeyName
   
   @rakeshadr , we don't actually changed the part name stored in OmMultipartKeyInfo during listParts logic. The returned full part name should include the clientID, so above expected partName will be like /volName/bucketName/a/b/c/d/multipartKeyName4445890, right?


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org


[GitHub] [ozone] rakeshadr merged pull request #2016: HDDS-4924. [FSO]S3Multipart: Implement OzoneBucket#listParts

Posted by GitBox <gi...@apache.org>.
rakeshadr merged pull request #2016:
URL: https://github.com/apache/ozone/pull/2016


   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org


[GitHub] [ozone] rakeshadr commented on a change in pull request #2016: HDDS-4924. [FSO]S3Multipart: Implement OzoneBucket#listParts

Posted by GitBox <gi...@apache.org>.
rakeshadr commented on a change in pull request #2016:
URL: https://github.com/apache/ozone/pull/2016#discussion_r591375368



##########
File path: hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneClientMultipartUploadV1.java
##########
@@ -566,6 +569,212 @@ public void testAbortUploadSuccessWithParts() throws Exception {
     // not making any assertion for the same.
   }
 
+  @Test
+  public void testListMultipartUploadParts() throws Exception {
+    String volumeName = UUID.randomUUID().toString();
+    String bucketName = UUID.randomUUID().toString();
+    String parentDir = "a/b/c/d/e/f";
+    String keyName = parentDir + UUID.randomUUID().toString();
+
+    store.createVolume(volumeName);
+    OzoneVolume volume = store.getVolume(volumeName);
+    volume.createBucket(bucketName);
+    OzoneBucket bucket = volume.getBucket(bucketName);
+
+    Map<Integer, String> partsMap = new TreeMap<>();
+    String uploadID = initiateMultipartUpload(bucket, keyName, STAND_ALONE,
+        ONE);
+    String partName1 = uploadPart(bucket, keyName, uploadID, 1,
+        generateData(OzoneConsts.OM_MULTIPART_MIN_SIZE, (byte)97));
+    partsMap.put(1, partName1);

Review comment:
       OK, Sure I will do that.
   IIUC, you are suggesting to directly accessing the multipartFileInfoTable and do assertions. Am I correct?
   
     ```
        OmMultipartKeyInfo omMultipartKeyInfo =
           cluster.getOzoneManager().getMetadataManager().getMultipartInfoTable().get(multiPartKey);
   
        // <parentID/fileName>+ClientID
        omMultipartKeyInfo.getPartKeyInfoMap().get(0).getPartName();
   
   ```

##########
File path: hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneClientMultipartUploadV1.java
##########
@@ -566,6 +569,212 @@ public void testAbortUploadSuccessWithParts() throws Exception {
     // not making any assertion for the same.
   }
 
+  @Test
+  public void testListMultipartUploadParts() throws Exception {
+    String volumeName = UUID.randomUUID().toString();
+    String bucketName = UUID.randomUUID().toString();
+    String parentDir = "a/b/c/d/e/f";
+    String keyName = parentDir + UUID.randomUUID().toString();
+
+    store.createVolume(volumeName);
+    OzoneVolume volume = store.getVolume(volumeName);
+    volume.createBucket(bucketName);
+    OzoneBucket bucket = volume.getBucket(bucketName);
+
+    Map<Integer, String> partsMap = new TreeMap<>();
+    String uploadID = initiateMultipartUpload(bucket, keyName, STAND_ALONE,
+        ONE);
+    String partName1 = uploadPart(bucket, keyName, uploadID, 1,
+        generateData(OzoneConsts.OM_MULTIPART_MIN_SIZE, (byte)97));
+    partsMap.put(1, partName1);

Review comment:
       OK, Sure I will do that. @linyiqun 
   IIUC, you are suggesting to directly accessing the multipartFileInfoTable and do assertions. Am I correct?
   
     ```
        OmMultipartKeyInfo omMultipartKeyInfo =
           cluster.getOzoneManager().getMetadataManager().getMultipartInfoTable().get(multiPartKey);
   
        // <parentID/fileName>+ClientID
        omMultipartKeyInfo.getPartKeyInfoMap().get(0).getPartName();
   
   ```




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org


[GitHub] [ozone] linyiqun commented on pull request #2016: HDDS-4924. [FSO]S3Multipart: Implement OzoneBucket#listParts

Posted by GitBox <gi...@apache.org>.
linyiqun commented on pull request #2016:
URL: https://github.com/apache/ozone/pull/2016#issuecomment-795027194


   The description of the JIRA
   >For example, user give keyName is a/b/c/d/multipartKeyName and assume objectID for the parent a/b/c/d  is 1027 and clientID is 4445890.
   Now, in DB it stores like 1027/multipartKeyName4445890.
   User expects partName like, /volName/bucketName/a/b/c/d/multipartKeyName
   
   @rakeshadr , we don't actually changed the part name stored in OmMultipartKeyInfo during listParts logic. The returned full part name should include the clientID, like /volName/bucketName/a/b/c/d/multipartKeyName4445890, right?


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org


[GitHub] [ozone] rakeshadr commented on pull request #2016: HDDS-4924. [FSO]S3Multipart: Implement OzoneBucket#listParts

Posted by GitBox <gi...@apache.org>.
rakeshadr commented on pull request #2016:
URL: https://github.com/apache/ozone/pull/2016#issuecomment-795053938


   > The description of the JIRA
   > 
   > > For example, user give keyName is a/b/c/d/multipartKeyName and assume objectID for the parent a/b/c/d  is 1027 and clientID is 4445890.
   > > Now, in DB it stores like 1027/multipartKeyName4445890.
   > > User expects partName like, /volName/bucketName/a/b/c/d/multipartKeyName
   > 
   > @rakeshadr , we don't actually changed the part name stored in OmMultipartKeyInfo during listParts logic. The returned full part name should include the clientID, so above expected partName will be like /volName/bucketName/a/b/c/d/multipartKeyName4445890, right?
   
   Yes, you are correct. I will update the description. OM will return keyname with "clientID"  -> In that example, it will be `/volName/bucketName/a/b/c/d/multipartKeyName4445890`


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org


[GitHub] [ozone] linyiqun commented on a change in pull request #2016: HDDS-4924. [FSO]S3Multipart: Implement OzoneBucket#listParts

Posted by GitBox <gi...@apache.org>.
linyiqun commented on a change in pull request #2016:
URL: https://github.com/apache/ozone/pull/2016#discussion_r591598041



##########
File path: hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneClientMultipartUploadV1.java
##########
@@ -566,6 +569,212 @@ public void testAbortUploadSuccessWithParts() throws Exception {
     // not making any assertion for the same.
   }
 
+  @Test
+  public void testListMultipartUploadParts() throws Exception {
+    String volumeName = UUID.randomUUID().toString();
+    String bucketName = UUID.randomUUID().toString();
+    String parentDir = "a/b/c/d/e/f";
+    String keyName = parentDir + UUID.randomUUID().toString();
+
+    store.createVolume(volumeName);
+    OzoneVolume volume = store.getVolume(volumeName);
+    volume.createBucket(bucketName);
+    OzoneBucket bucket = volume.getBucket(bucketName);
+
+    Map<Integer, String> partsMap = new TreeMap<>();
+    String uploadID = initiateMultipartUpload(bucket, keyName, STAND_ALONE,
+        ONE);
+    String partName1 = uploadPart(bucket, keyName, uploadID, 1,
+        generateData(OzoneConsts.OM_MULTIPART_MIN_SIZE, (byte)97));
+    partsMap.put(1, partName1);

Review comment:
       Looks good to me.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org


[GitHub] [ozone] rakeshadr commented on a change in pull request #2016: HDDS-4924. [FSO]S3Multipart: Implement OzoneBucket#listParts

Posted by GitBox <gi...@apache.org>.
rakeshadr commented on a change in pull request #2016:
URL: https://github.com/apache/ozone/pull/2016#discussion_r591568024



##########
File path: hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneClientMultipartUploadV1.java
##########
@@ -566,6 +569,212 @@ public void testAbortUploadSuccessWithParts() throws Exception {
     // not making any assertion for the same.
   }
 
+  @Test
+  public void testListMultipartUploadParts() throws Exception {
+    String volumeName = UUID.randomUUID().toString();
+    String bucketName = UUID.randomUUID().toString();
+    String parentDir = "a/b/c/d/e/f";
+    String keyName = parentDir + UUID.randomUUID().toString();
+
+    store.createVolume(volumeName);
+    OzoneVolume volume = store.getVolume(volumeName);
+    volume.createBucket(bucketName);
+    OzoneBucket bucket = volume.getBucket(bucketName);
+
+    Map<Integer, String> partsMap = new TreeMap<>();
+    String uploadID = initiateMultipartUpload(bucket, keyName, STAND_ALONE,
+        ONE);
+    String partName1 = uploadPart(bucket, keyName, uploadID, 1,
+        generateData(OzoneConsts.OM_MULTIPART_MIN_SIZE, (byte)97));
+    partsMap.put(1, partName1);

Review comment:
       @linyiqun Thanks a lot for the clear explanation.
   I've pushed the changes. Does this sound good to you.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org