From 2941c77abc00e99a35a1d27a6ba2878b829b2007 Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Tue, 21 May 2019 00:06:36 +0530 Subject: [PATCH] FIX: skip upload recovery if file not found in s3 --- lib/s3_inventory.rb | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/lib/s3_inventory.rb b/lib/s3_inventory.rb index 77c61cab3c8..83b64b25a8c 100644 --- a/lib/s3_inventory.rb +++ b/lib/s3_inventory.rb @@ -85,20 +85,24 @@ class S3Inventory result = connection.exec("SELECT * FROM #{table_name} WHERE key LIKE '%original/%/#{sha1}%'") if result.count >= 1 - key = result[0]["key"] - data = @s3_helper.object(key).data - filename = (data.content_disposition&.match(/filename=\"(.*)\"/) || [])[1] + begin + key = result[0]["key"] + data = @s3_helper.object(key).data + filename = (data.content_disposition&.match(/filename=\"(.*)\"/) || [])[1] - upload = Upload.new( - user_id: Discourse.system_user.id, - original_filename: filename || File.basename(key), - filesize: data.content_length, - url: File.join(Discourse.store.absolute_base_url, key), - sha1: sha1, - etag: result[0]["etag"] - ) - upload.save!(validate: false) - upload_id = upload.id + upload = Upload.new( + user_id: Discourse.system_user.id, + original_filename: filename || File.basename(key), + filesize: data.content_length, + url: File.join(Discourse.store.absolute_base_url, key), + sha1: sha1, + etag: result[0]["etag"] + ) + upload.save!(validate: false) + upload_id = upload.id + rescue Aws::S3::Errors::NotFound + next + end end upload_id