]> cat aescling's git repositories - mastodon.git/commitdiff
Fix possible race condition when processing statuses (#10815)
authorThibG <thib@sitedethib.com>
Thu, 23 May 2019 18:00:39 +0000 (20:00 +0200)
committerEugen Rochko <eugen@zeonfederated.com>
Thu, 23 May 2019 18:00:39 +0000 (20:00 +0200)
app/lib/activitypub/activity/create.rb

index 6b16c99863341652859704fa6c670f02fa053ef3..2bc33c04bfeb65de2de095a38bdb042bab4c46b1 100644 (file)
@@ -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