Fix and improve batch attachment deletion handling when using OpenStack Swift (#32637)

This commit is contained in:
Hugo Gameiro 2024-10-28 13:32:56 +00:00 committed by GitHub
parent dc0b1948be
commit b1d3c64525
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -77,10 +77,22 @@ class AttachmentBatch
when :fog when :fog
logger.debug { "Deleting #{attachment.path(style)}" } logger.debug { "Deleting #{attachment.path(style)}" }
retries = 0
begin begin
attachment.send(:directory).files.new(key: attachment.path(style)).destroy attachment.send(:directory).files.new(key: attachment.path(style)).destroy
rescue Fog::Storage::OpenStack::NotFound rescue Fog::OpenStack::Storage::NotFound
# Ignore failure to delete a file that has already been deleted logger.debug "Will ignore because file is not found #{attachment.path(style)}"
rescue => e
retries += 1
if retries < MAX_RETRY
logger.debug "Retry #{retries}/#{MAX_RETRY} after #{e.message}"
sleep 2**retries
retry
else
logger.error "Batch deletion from fog failed after #{e.message}"
raise e
end
end end
when :azure when :azure
logger.debug { "Deleting #{attachment.path(style)}" } logger.debug { "Deleting #{attachment.path(style)}" }