Skip to content

Commit 9c5e25f

Browse files
author
bigint
committed
feat(truncate): improve object deletion in Everland bucket by batching deletes and enhancing logging for truncation process
1 parent e2b7de6 commit 9c5e25f

File tree

1 file changed

+24
-10
lines changed

1 file changed

+24
-10
lines changed

apps/cron/src/truncate4EverlandBucket.ts

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,29 +38,43 @@ const truncate4EverlandBucket = async () => {
3838

3939
if (Contents) {
4040
const oldObjects = Contents.filter(
41-
(object) => new Date(object.LastModified!) < dateDaysAgo
41+
(object) =>
42+
object.LastModified && new Date(object.LastModified) < dateDaysAgo
4243
);
4344
objectsToDelete = objectsToDelete.concat(
44-
oldObjects.map((object) => ({ Key: object.Key! }))
45+
oldObjects
46+
.map((object) => ({ Key: object.Key! }))
47+
.filter((obj) => obj.Key)
4548
);
4649
}
4750

4851
ContinuationToken = IsTruncated ? NextContinuationToken : undefined;
4952
} while (ContinuationToken);
5053

51-
console.log(objectsToDelete.length);
54+
logger.info(
55+
`[Cron] truncate4EverlandBucket - Found ${objectsToDelete.length} objects older than ${daysToSubtract} days.`
56+
);
5257

5358
if (objectsToDelete.length > 0) {
54-
const deleteCommand = new DeleteObjectsCommand({
55-
Bucket,
56-
Delete: { Objects: objectsToDelete }
57-
});
59+
const deleteBatchSize = 1000;
60+
61+
while (objectsToDelete.length > 0) {
62+
const batch = objectsToDelete.splice(0, deleteBatchSize);
63+
64+
const deleteCommand = new DeleteObjectsCommand({
65+
Bucket,
66+
Delete: { Objects: batch }
67+
});
68+
69+
s3Client.send(deleteCommand);
70+
logger.info(
71+
`[Cron] truncate4EverlandBucket - Deleted ${batch.length} objects in a batch.`
72+
);
73+
}
5874

59-
await s3Client.send(deleteCommand);
6075
logger.info(
61-
`[Cron] truncate4EverlandBucket - Deleted ${objectsToDelete.length} objects older than ${daysToSubtract} days.`
76+
`[Cron] truncate4EverlandBucket - Deleted all objects older than ${daysToSubtract} days.`
6277
);
63-
6478
return;
6579
}
6680

0 commit comments

Comments
 (0)