~cytrogen/masto-fe

a1f5188c8c4c98149ce157f9a9a596874f2b46dd — Eugen Rochko 2 years ago 610cf6c
Change feed merge, unmerge and regeneration workers to use a replica (#25849)

3 files changed, 23 insertions(+), 4 deletions(-)

M app/workers/merge_worker.rb
M app/workers/regeneration_worker.rb
M app/workers/unmerge_worker.rb
M app/workers/merge_worker.rb => app/workers/merge_worker.rb +8 -1
@@ 5,7 5,14 @@ class MergeWorker
  include Redisable

  def perform(from_account_id, into_account_id)
    FeedManager.instance.merge_into_home(Account.find(from_account_id), Account.find(into_account_id))
    ApplicationRecord.connected_to(role: :primary) do
      @from_account = Account.find(from_account_id)
      @into_account = Account.find(into_account_id)
    end

    ApplicationRecord.connected_to(role: :read, prevent_writes: true) do
      FeedManager.instance.merge_into_home(@from_account, @into_account)
    end
  rescue ActiveRecord::RecordNotFound
    true
  ensure

M app/workers/regeneration_worker.rb => app/workers/regeneration_worker.rb +7 -2
@@ 6,8 6,13 @@ class RegenerationWorker
  sidekiq_options lock: :until_executed

  def perform(account_id, _ = :home)
    account = Account.find(account_id)
    PrecomputeFeedService.new.call(account)
    ApplicationRecord.connected_to(role: :primary) do
      @account = Account.find(account_id)
    end

    ApplicationRecord.connected_to(role: :read, prevent_writes: true) do
      PrecomputeFeedService.new.call(@account)
    end
  rescue ActiveRecord::RecordNotFound
    true
  end

M app/workers/unmerge_worker.rb => app/workers/unmerge_worker.rb +8 -1
@@ 6,7 6,14 @@ class UnmergeWorker
  sidekiq_options queue: 'pull'

  def perform(from_account_id, into_account_id)
    FeedManager.instance.unmerge_from_home(Account.find(from_account_id), Account.find(into_account_id))
    ApplicationRecord.connected_to(role: :primary) do
      @from_account = Account.find(from_account_id)
      @into_account = Account.find(into_account_id)
    end

    ApplicationRecord.connected_to(role: :read, prevent_writes: true) do
      FeedManager.instance.unmerge_from_home(@from_account, @into_account)
    end
  rescue ActiveRecord::RecordNotFound
    true
  end