diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneClientMultipartUploadWithFSO.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneClientMultipartUploadWithFSO.java index 262b444cc9ec..6e8af6405fe3 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneClientMultipartUploadWithFSO.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneClientMultipartUploadWithFSO.java @@ -309,6 +309,12 @@ public void testUploadPartOverrideWithRatis() throws IOException { // comparing part names and large file uploads work using aws cp. Assert.assertEquals("Part names should be same", partName, commitUploadPartInfo.getPartName()); + + // old part bytes written needs discard and have only + // new part bytes in quota for this bucket + long byteWritten = "name".length() * 3; // data written with replication + Assert.assertEquals(volume.getBucket(bucketName).getUsedBytes(), + byteWritten); } @Test 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 0644e1f27447..57c7e008cce8 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 @@ -229,8 +229,12 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, omBucketInfo = getBucketInfo(omMetadataManager, volumeName, bucketName); long correctedSpace = omKeyInfo.getReplicatedSize(); - // TODO: S3MultipartUpload did not check quota and did not add nameSpace, - // we need to fix these issues in HDDS-6650. + if (null != oldPartKeyInfo) { + OmKeyInfo partKeyToBeDeleted = + OmKeyInfo.getFromProtobuf(oldPartKeyInfo.getPartKeyInfo()); + correctedSpace -= partKeyToBeDeleted.getReplicatedSize(); + } + checkBucketQuotaInBytes(omBucketInfo, correctedSpace); omBucketInfo.incrUsedBytes(correctedSpace); omResponse.setCommitMultiPartUploadResponse(