From 668013265c3153383088d9dd53970ae837c1d405 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 12 Dec 2016 21:12:19 +0100 Subject: [PATCH] Restoring old async behaviour of thread resolving as it proved to be more robust --- app/services/process_feed_service.rb | 13 +------------ app/workers/pubsubhubbub/delivery_worker.rb | 2 +- app/workers/thread_resolve_worker.rb | 15 +++++++++++++++ 3 files changed, 17 insertions(+), 13 deletions(-) create mode 100644 app/workers/thread_resolve_worker.rb diff --git a/app/services/process_feed_service.rb b/app/services/process_feed_service.rb index a525bc32..3860a350 100644 --- a/app/services/process_feed_service.rb +++ b/app/services/process_feed_service.rb @@ -122,7 +122,7 @@ class ProcessFeedService < BaseService def find_or_resolve_status(parent, uri, url) status = find_status(uri) - ResolveThread.new.call(parent, url) if status.nil? + ThreadResolveWorker.perform_async(parent.id, url) if status.nil? status end @@ -243,15 +243,4 @@ class ProcessFeedService < BaseService "#{username}@#{domain}" end end - - class ResolveThread - def call(child_status, parent_url) - parent_status = FetchRemoteStatusService.new.call(parent_url) - - return if parent_status.nil? - - child_status.thread = parent_status - child_status.save! - end - end end diff --git a/app/workers/pubsubhubbub/delivery_worker.rb b/app/workers/pubsubhubbub/delivery_worker.rb index 20c72ce2..35bf7b2f 100644 --- a/app/workers/pubsubhubbub/delivery_worker.rb +++ b/app/workers/pubsubhubbub/delivery_worker.rb @@ -4,7 +4,7 @@ class Pubsubhubbub::DeliveryWorker include Sidekiq::Worker include RoutingHelper - sidekiq_options queue: 'push' + sidekiq_options queue: 'push', retry: 5 def perform(subscription_id, payload) subscription = Subscription.find(subscription_id) diff --git a/app/workers/thread_resolve_worker.rb b/app/workers/thread_resolve_worker.rb new file mode 100644 index 00000000..84eae73b --- /dev/null +++ b/app/workers/thread_resolve_worker.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class ThreadResolveWorker + include Sidekiq::Worker + + def perform(child_status_id, parent_url) + child_status = Status.find(child_status_id) + parent_status = FetchRemoteStatusService.new.call(parent_url) + + return if parent_status.nil? + + child_status.thread = parent_status + child_status.save! + end +end