about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2021-05-05 23:46:59 +0200
committerGitHub <noreply@github.com>2021-05-05 23:46:59 +0200
commit6d9ad30bf861b2422c5951f7593a657675fedc24 (patch)
tree9c11fe1743a591cb7914211b6524eee74676dd68
parentaa1b43f46786ad23098159f1210b1811c64de72a (diff)
Fix media redownload worker retrying on unexpected response codes (#16111)
-rw-r--r--app/workers/redownload_media_worker.rb11
-rw-r--r--lib/exceptions.rb4
2 files changed, 14 insertions, 1 deletions
diff --git a/app/workers/redownload_media_worker.rb b/app/workers/redownload_media_worker.rb
index 0638cd0f0..343caa32c 100644
--- a/app/workers/redownload_media_worker.rb
+++ b/app/workers/redownload_media_worker.rb
@@ -3,6 +3,7 @@
 class RedownloadMediaWorker
   include Sidekiq::Worker
   include ExponentialBackoff
+  include JsonLdHelper
 
   sidekiq_options queue: 'pull', retry: 3
 
@@ -15,6 +16,14 @@ class RedownloadMediaWorker
     media_attachment.download_thumbnail!
     media_attachment.save
   rescue ActiveRecord::RecordNotFound
-    true
+    # Do nothing
+  rescue Mastodon::UnexpectedResponseError => e
+    response = e.response
+
+    if response_error_unsalvageable?(response)
+      # Give up
+    else
+      raise e
+    end
   end
 end
diff --git a/lib/exceptions.rb b/lib/exceptions.rb
index 7c8e77871..eb472abaa 100644
--- a/lib/exceptions.rb
+++ b/lib/exceptions.rb
@@ -12,7 +12,11 @@ module Mastodon
   class RateLimitExceededError < Error; end
 
   class UnexpectedResponseError < Error
+    attr_reader :response
+
     def initialize(response = nil)
+      @response = response
+
       if response.respond_to? :uri
         super("#{response.uri} returned code #{response.code}")
       else