about summary refs log tree commit diff
path: root/app/workers/activitypub/delivery_worker.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/workers/activitypub/delivery_worker.rb')
-rw-r--r--app/workers/activitypub/delivery_worker.rb11
1 files changed, 9 insertions, 2 deletions
diff --git a/app/workers/activitypub/delivery_worker.rb b/app/workers/activitypub/delivery_worker.rb
index a4e829343..7b1e06a70 100644
--- a/app/workers/activitypub/delivery_worker.rb
+++ b/app/workers/activitypub/delivery_worker.rb
@@ -3,7 +3,7 @@
 class ActivityPub::DeliveryWorker
   include Sidekiq::Worker
 
-  sidekiq_options queue: 'push', retry: 5, dead: false
+  sidekiq_options queue: 'push', retry: 8, dead: false
 
   HEADERS = { 'Content-Type' => 'application/activity+json' }.freeze
 
@@ -15,7 +15,10 @@ class ActivityPub::DeliveryWorker
     perform_request
 
     raise Mastodon::UnexpectedResponseError, @response unless response_successful?
+
+    failure_tracker.track_success!
   rescue => e
+    failure_tracker.track_failure!
     raise e.class, "Delivery failed for #{inbox_url}: #{e.message}", e.backtrace[0]
   end
 
@@ -28,10 +31,14 @@ class ActivityPub::DeliveryWorker
   end
 
   def perform_request
-    @response = build_request.perform
+    @response = build_request.perform.flush
   end
 
   def response_successful?
     @response.code > 199 && @response.code < 300
   end
+
+  def failure_tracker
+    @failure_tracker ||= DeliveryFailureTracker.new(@inbox_url)
+  end
 end