diff options
author | ThibG <thib@sitedethib.com> | 2019-05-23 20:00:39 +0200 |
---|---|---|
committer | multiple creatures <dev@multiple-creature.party> | 2019-11-19 13:36:01 -0600 |
commit | e4731a4d7003fc426cdf187690846d36beaf67ba (patch) | |
tree | 81988c68d15865c4a4d0405a50b6fc23138e3432 /app/lib | |
parent | b49fdce78429f65a20df2d7c7c9eb61fd15539f8 (diff) |
Fix possible race condition when processing statuses (#10815)
Diffstat (limited to 'app/lib')
-rw-r--r-- | app/lib/activitypub/activity/create.rb | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index c5376ed95..d1fd1411e 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -367,7 +367,11 @@ class ActivityPub::Activity::Create < ActivityPub::Activity def conversation_from_uri(uri) return nil if uri.nil? return Conversation.find_by(id: OStatus::TagManager.instance.unique_tag_to_local_id(uri, 'Conversation')) if OStatus::TagManager.instance.local_id?(uri) - Conversation.find_by(uri: uri) || Conversation.create(uri: uri) + begin + Conversation.find_or_create_by!(uri: uri) + rescue ActiveRecord::RecordInvalid, ActiveRecord::RecordNotUnique + retry + end end def visibility_from_audience |