Handle StaleObjectError when retrieving polls (#10208)

This commit is contained in:
ThibG 2019-03-07 15:52:38 +01:00 committed by Eugen Rochko
parent 637c952ccb
commit 09c042aa10
1 changed files with 11 additions and 6 deletions

View File

@ -32,12 +32,17 @@ class ActivityPub::FetchRemotePollService < BaseService
# votes, so we need to remove them # votes, so we need to remove them
poll.votes.delete_all if latest_options != poll.options poll.votes.delete_all if latest_options != poll.options
begin
poll.update!( poll.update!(
last_fetched_at: Time.now.utc, last_fetched_at: Time.now.utc,
expires_at: expires_at, expires_at: expires_at,
options: latest_options, options: latest_options,
cached_tallies: items.map { |item| item.dig('replies', 'totalItems') || 0 } cached_tallies: items.map { |item| item.dig('replies', 'totalItems') || 0 }
) )
rescue ActiveRecord::StaleObjectError
poll.reload
retry
end
end end
private private