From 088c11a12c226f1c2511a2da269dc5f938fe2f6c Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Tue, 12 May 2020 11:14:57 -0400 Subject: [PATCH] FIX: Don't raise an exception if a TopicLink cannot be created This can happen under concurrency and it's fine. If a `TopicLink` already exists we can continue on without raising an error. --- app/models/topic_link.rb | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/app/models/topic_link.rb b/app/models/topic_link.rb index f913dc64595..afc6faea007 100644 --- a/app/models/topic_link.rb +++ b/app/models/topic_link.rb @@ -213,16 +213,18 @@ class TopicLink < ActiveRecord::Base unless TopicLink.exists?(topic_id: post.topic_id, post_id: post.id, url: url) file_extension = File.extname(parsed.path)[1..10].downcase unless parsed.path.nil? || File.extname(parsed.path).empty? begin - TopicLink.create!(post_id: post.id, - user_id: post.user_id, - topic_id: post.topic_id, - url: url, - domain: parsed.host || Discourse.current_hostname, - internal: internal, - link_topic_id: topic&.id, - link_post_id: reflected_post.try(:id), - quote: link.is_quote, - extension: file_extension) + TopicLink.create( + post_id: post.id, + user_id: post.user_id, + topic_id: post.topic_id, + url: url, + domain: parsed.host || Discourse.current_hostname, + internal: internal, + link_topic_id: topic&.id, + link_post_id: reflected_post.try(:id), + quote: link.is_quote, + extension: file_extension + ) rescue ActiveRecord::RecordNotUnique # it's fine end