Changed S3 delete error handling.

This commit is contained in:
DebaucheryLibrarian 2025-03-04 04:07:07 +01:00
parent dc04577a6c
commit b5eddf61f9
1 changed files with 26 additions and 30 deletions

View File

@ -1000,41 +1000,37 @@ async function associateAvatars(profiles) {
} }
async function deleteS3Objects(allMedia) { async function deleteS3Objects(allMedia) {
try { const statuses = await chunk(allMedia).reduce(async (chain, media) => {
const statuses = await chunk(allMedia).reduce(async (chain, media) => { const acc = await chain;
const acc = await chain;
const objects = media const objects = media
.map((item) => [ .map((item) => [
{ Key: item.path }, { Key: item.path },
{ Key: item.thumbnail }, { Key: item.thumbnail },
{ Key: item.lazy }, { Key: item.lazy },
]) ])
.flat() .flat()
.filter((item) => item.Key); .filter((item) => item.Key);
const deleteCommand = new DeleteObjectsCommand({ const deleteCommand = new DeleteObjectsCommand({
Bucket: config.s3.bucket, Bucket: config.s3.bucket,
Delete: { Delete: {
Objects: objects, Objects: objects,
Quiet: false, Quiet: false,
}, },
});
const status = await s3.send(deleteCommand);
logger.info(`Removed ${status.Deleted.length} media files from S3 bucket '${config.s3.bucket}', ${status.Errors.length} errors`);
return acc.concat(status);
}, Promise.resolve()).catch((error) => {
console.log(error);
}); });
return statuses; const status = await s3.send(deleteCommand);
} catch (error) {
console.log(error); logger.info(`Removed ${status.Deleted.length} media files from S3 bucket '${config.s3.bucket}', ${status.Errors.length} errors`);
return acc.concat(status);
}, Promise.resolve()).catch((error) => {
logger.error(`Failed to delete S3 objects: ${error.message}`);
throw error; throw error;
} });
return statuses;
} }
async function flushOrphanedMedia(stage = 1) { async function flushOrphanedMedia(stage = 1) {