summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKamil Trzciński <ayufan@ayufan.eu>2019-03-19 17:49:38 +0100
committerKamil Trzciński <ayufan@ayufan.eu>2019-03-19 17:49:38 +0100
commit4e34363be7e2c6e78dcecc0c15bfa2eeec4de787 (patch)
treee6b93dbdd1ce27619ef8cfba11f1fd8ed0c95e20
parent80fea82f3ab6afd486884020710eb01c06b048d9 (diff)
downloadgitlab-ce-ignore-duplicates-on-bulk-insert.tar.gz
Ignore failures on duplicates insertignore-duplicates-on-bulk-insert
-rw-r--r--app/models/merge_request_diff.rb5
-rw-r--r--app/models/merge_request_diff_commit.rb5
2 files changed, 10 insertions, 0 deletions
diff --git a/app/models/merge_request_diff.rb b/app/models/merge_request_diff.rb
index 351a662ae83..577f1794ffe 100644
--- a/app/models/merge_request_diff.rb
+++ b/app/models/merge_request_diff.rb
@@ -308,6 +308,11 @@ class MergeRequestDiff < ActiveRecord::Base
# Faster inserts
Gitlab::Database.bulk_insert('merge_request_diff_files', rows)
+ rescue ActiveRecord::RecordNotUnique
+ ids = rows.map { |row| row[:merge_request_diff_id] }.uniq.sort
+
+ Gitlab::Sentry.track_exception(e, extra: { ids: ids })
+ Rails.logger.info("#{self.class.name}: rows inserted twice for IDs #{ids}")
end
def build_external_merge_request_diff_files(diffs)
diff --git a/app/models/merge_request_diff_commit.rb b/app/models/merge_request_diff_commit.rb
index 4ad3690512d..e6d6196675c 100644
--- a/app/models/merge_request_diff_commit.rb
+++ b/app/models/merge_request_diff_commit.rb
@@ -26,6 +26,11 @@ class MergeRequestDiffCommit < ActiveRecord::Base
end
Gitlab::Database.bulk_insert(self.table_name, rows)
+ rescue ActiveRecord::RecordNotUnique => e
+ ids = rows.map { |row| row[:merge_request_diff_id] }.uniq.sort
+
+ Rails.logger.info("#{self.class.name}: rows inserted twice for IDs #{ids}")
+ Gitlab::Sentry.track_exception(e, extra: { ids: ids })
end
def to_hash