From: ThibG Date: Thu, 23 May 2019 18:00:39 +0000 (+0200) Subject: Fix possible race condition when processing statuses (#10815) X-Git-Url: https://git.xn--scling-oua.cat.family/?a=commitdiff_plain;h=9a5561a5b87e57fae0333a025b8ef42aaab6ce0f;p=mastodon.git Fix possible race condition when processing statuses (#10815) --- diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index 6b16c9986..2bc33c04b 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -267,7 +267,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