Change feed merge, unmerge and regeneration workers to use a replica (#25849)

main
Eugen Rochko 2023-07-10 03:06:09 +02:00 committed by GitHub
parent 610cf6c371
commit a1f5188c8c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 4 deletions

View File

@ -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

View File

@ -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

View File

@ -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