-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest.patch
More file actions
85 lines (83 loc) · 4.1 KB
/
test.patch
File metadata and controls
85 lines (83 loc) · 4.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
Subject: [PATCH] test
---
Index: hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/s3/multipart/TestS3ExpiredMultipartUploadsAbortRequest.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/s3/multipart/TestS3ExpiredMultipartUploadsAbortRequest.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/s3/multipart/TestS3ExpiredMultipartUploadsAbortRequest.java
--- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/s3/multipart/TestS3ExpiredMultipartUploadsAbortRequest.java (revision 21d30a840ad081696b788bc43eac9bc8b52bc3ff)
+++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/s3/multipart/TestS3ExpiredMultipartUploadsAbortRequest.java (date 1763102407856)
@@ -20,6 +20,7 @@
package org.apache.hadoop.ozone.om.request.s3.multipart;
import com.google.common.base.Optional;
+import org.apache.hadoop.hdds.client.ECReplicationConfig;
import org.apache.hadoop.hdds.client.ReplicationConfig;
import org.apache.hadoop.hdds.client.ReplicationFactor;
import org.apache.hadoop.hdds.client.ReplicationType;
@@ -28,15 +29,10 @@
import org.apache.hadoop.hdds.utils.db.cache.CacheKey;
import org.apache.hadoop.hdds.utils.db.cache.CacheValue;
import org.apache.hadoop.ozone.om.OMMetrics;
-import org.apache.hadoop.ozone.om.helpers.OmMultipartUpload;
-import org.apache.hadoop.ozone.om.helpers.OzoneFSUtils;
+import org.apache.hadoop.ozone.om.helpers.*;
import org.apache.hadoop.ozone.om.request.OMRequestTestUtils;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos
.Status;
-import org.apache.hadoop.ozone.om.helpers.BucketLayout;
-import org.apache.hadoop.ozone.om.helpers.OmKeyInfo;
-import org.apache.hadoop.ozone.om.helpers.OmMultipartKeyInfo;
-import org.apache.hadoop.ozone.om.helpers.WithObjectID;
import org.apache.hadoop.ozone.om.request.util.OMMultipartUploadUtils;
import org.apache.hadoop.ozone.om.response.OMClientResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos;
@@ -310,6 +306,49 @@
metrics.getNumExpiredMPUPartsAborted());
}
+ /**
+ * Verify that aborting expired MPUs does not make bucket usedBytes negative.
+ */
+ @ParameterizedTest
+ @MethodSource("bucketLayouts")
+ public void testAbortExpiredMPUsDoesNotMakeUsedBytesNegative(
+ BucketLayout buckLayout) throws Exception {
+ this.bucketLayout = buckLayout;
+
+ final String volumeName = UUID.randomUUID().toString();
+ final String bucketName = UUID.randomUUID().toString();
+ final String keyName = UUID.randomUUID().toString();
+
+ OMRequestTestUtils.addVolumeAndBucketToDB(volumeName, bucketName,
+ omMetadataManager, getBucketLayout());
+
+ final int numMPUs = 1;
+ final int numParts = 1;
+
+ List<String> mpuKeys = createMPUs(volumeName, bucketName, keyName,
+ numMPUs, numParts, getBucketLayout());
+
+ String bucketKey =
+ omMetadataManager.getBucketKey(volumeName, bucketName);
+ OmBucketInfo bucketInfoBefore =
+ omMetadataManager.getBucketTable().get(bucketKey);
+ long usedBytesBefore = bucketInfoBefore.getUsedBytes();
+
+ Assertions.assertTrue(usedBytesBefore > 0,
+ "Expected bucket usedBytes to be > 0 before aborting expired MPUs");
+
+ abortExpiredMPUsFromCache(volumeName, bucketName, mpuKeys);
+ Thread.sleep(5000);
+ OmBucketInfo bucketInfoAfter =
+ omMetadataManager.getBucketTable().get(bucketKey);
+ long usedBytesAfter = bucketInfoAfter.getUsedBytes();
+
+ Assertions.assertEquals(0L, usedBytesAfter,
+ "Bucket usedBytes should be 0 after aborting expired MPUs");
+ Assertions.assertTrue(usedBytesAfter >= 0,
+ "Bucket usedBytes must not be negative after aborting expired MPUs");
+ }
+
/**
* Constructs a new {@link S3ExpiredMultipartUploadsAbortRequest} objects,
* and calls its {@link S3ExpiredMultipartUploadsAbortRequest#preExecute}