diff options
author | Kamil Trzciński <ayufan@ayufan.eu> | 2019-03-19 17:49:38 +0100 |
---|---|---|
committer | Kamil Trzciński <ayufan@ayufan.eu> | 2019-03-19 17:49:38 +0100 |
commit | 4e34363be7e2c6e78dcecc0c15bfa2eeec4de787 (patch) | |
tree | e6b93dbdd1ce27619ef8cfba11f1fd8ed0c95e20 | |
parent | 80fea82f3ab6afd486884020710eb01c06b048d9 (diff) | |
download | gitlab-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.rb | 5 | ||||
-rw-r--r-- | app/models/merge_request_diff_commit.rb | 5 |
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 |