Skip to content

Commit bb7c419

Browse files
committed
♻️ delete object, bucket and deleteMarkers in parallel
Issue: CLDSRV-632
1 parent 2c19413 commit bb7c419

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

tests/functional/aws-node-sdk/lib/utility/bucket-util.js

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,38 +88,47 @@ class BucketUtility {
8888
};
8989

9090
const listedObjects = await this.s3.listObjectVersions(param).promise();
91+
const objectToDeletePromises = [];
92+
const directoryToDeletePromises = [];
93+
const deleteMarkerToDeletePromises = [];
9194

9295
for (const version of listedObjects.Versions) {
9396
if (version.Key.endsWith('/')) {
9497
continue;
9598
}
9699

97-
await this.s3.deleteObject({
100+
objectToDeletePromises.push(this.s3.deleteObject({
98101
Bucket: bucketName,
99102
Key: version.Key,
100103
VersionId: version.VersionId,
101-
}).promise();
104+
}).promise());
102105
}
103106

107+
await Promise.all(objectToDeletePromises);
108+
104109
for (const version of listedObjects.Versions) {
105110
if (!version.Key.endsWith('/')) {
106111
continue;
107112
}
108113

109-
await this.s3.deleteObject({
114+
directoryToDeletePromises.push(this.s3.deleteObject({
110115
Bucket: bucketName,
111116
Key: version.Key,
112117
VersionId: version.VersionId,
113-
}).promise();
118+
}).promise());
114119
}
115120

121+
await Promise.all(directoryToDeletePromises);
122+
116123
for (const marker of listedObjects.DeleteMarkers) {
117-
await this.s3.deleteObject({
124+
deleteMarkerToDeletePromises.push(this.s3.deleteObject({
118125
Bucket: bucketName,
119126
Key: marker.Key,
120127
VersionId: marker.VersionId,
121-
}).promise();
128+
}).promise());
122129
}
130+
131+
await Promise.all(deleteMarkerToDeletePromises);
123132
}
124133

125134
emptyMany(bucketNames) {

0 commit comments

Comments
 (0)