FIX: skip upload recovery if file not found in s3

This commit is contained in:
Vinoth Kannan
2019-05-21 00:06:36 +05:30
parent 555305325a
commit 2941c77abc

View File

@ -85,20 +85,24 @@ class S3Inventory
result = connection.exec("SELECT * FROM #{table_name} WHERE key LIKE '%original/%/#{sha1}%'") result = connection.exec("SELECT * FROM #{table_name} WHERE key LIKE '%original/%/#{sha1}%'")
if result.count >= 1 if result.count >= 1
key = result[0]["key"] begin
data = @s3_helper.object(key).data key = result[0]["key"]
filename = (data.content_disposition&.match(/filename=\"(.*)\"/) || [])[1] data = @s3_helper.object(key).data
filename = (data.content_disposition&.match(/filename=\"(.*)\"/) || [])[1]
upload = Upload.new( upload = Upload.new(
user_id: Discourse.system_user.id, user_id: Discourse.system_user.id,
original_filename: filename || File.basename(key), original_filename: filename || File.basename(key),
filesize: data.content_length, filesize: data.content_length,
url: File.join(Discourse.store.absolute_base_url, key), url: File.join(Discourse.store.absolute_base_url, key),
sha1: sha1, sha1: sha1,
etag: result[0]["etag"] etag: result[0]["etag"]
) )
upload.save!(validate: false) upload.save!(validate: false)
upload_id = upload.id upload_id = upload.id
rescue Aws::S3::Errors::NotFound
next
end
end end
upload_id upload_id