Fix batch deletion of media attachments when using S3

This commit is contained in:
Claire 2025-11-24 10:14:46 +01:00
parent 585545d0d5
commit 1553e55861

View File

@ -112,17 +112,21 @@ class AttachmentBatch
keys.each_slice(LIMIT) do |keys_slice| keys.each_slice(LIMIT) do |keys_slice|
logger.debug { "Deleting #{keys_slice.size} objects" } logger.debug { "Deleting #{keys_slice.size} objects" }
bucket.delete_objects( # Calling the client directly because `Aws::S3::Bucket#delete_objects` does not let us pass `http_read_timeout`
Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
bucket.client.delete_objects(
{ {
delete: { delete: {
objects: keys_slice.map { |key| { key: key } }, objects: keys_slice.map { |key| { key: key } },
quiet: true, quiet: true,
}, },
bucket: bucket.name,
}, },
{ {
http_read_timeout: [Paperclip::Attachment.default_options[:s3_options][:http_read_timeout], 120].max, http_read_timeout: [Paperclip::Attachment.default_options[:s3_options][:http_read_timeout], 120].max,
} }
) )
end
rescue => e rescue => e
retries += 1 retries += 1