Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/background_migration/remove_duplicate_vulnerabilities_findings.rb')
-rw-r--r--lib/gitlab/background_migration/remove_duplicate_vulnerabilities_findings.rb20
1 files changed, 17 insertions, 3 deletions
diff --git a/lib/gitlab/background_migration/remove_duplicate_vulnerabilities_findings.rb b/lib/gitlab/background_migration/remove_duplicate_vulnerabilities_findings.rb
index ca61118a06c..15799659b55 100644
--- a/lib/gitlab/background_migration/remove_duplicate_vulnerabilities_findings.rb
+++ b/lib/gitlab/background_migration/remove_duplicate_vulnerabilities_findings.rb
@@ -2,7 +2,7 @@
# rubocop: disable Style/Documentation
class Gitlab::BackgroundMigration::RemoveDuplicateVulnerabilitiesFindings
- DELETE_BATCH_SIZE = 100
+ DELETE_BATCH_SIZE = 50
# rubocop:disable Gitlab/NamespacedClass
class VulnerabilitiesFinding < ActiveRecord::Base
@@ -10,6 +10,12 @@ class Gitlab::BackgroundMigration::RemoveDuplicateVulnerabilitiesFindings
end
# rubocop:enable Gitlab/NamespacedClass
+ # rubocop:disable Gitlab/NamespacedClass
+ class Vulnerability < ActiveRecord::Base
+ self.table_name = "vulnerabilities"
+ end
+ # rubocop:enable Gitlab/NamespacedClass
+
def perform(start_id, end_id)
batch = VulnerabilitiesFinding.where(id: start_id..end_id)
@@ -40,11 +46,19 @@ class Gitlab::BackgroundMigration::RemoveDuplicateVulnerabilitiesFindings
ids_to_delete.concat(duplicate_ids)
if ids_to_delete.size == DELETE_BATCH_SIZE
- VulnerabilitiesFinding.where(id: ids_to_delete).delete_all
+ delete_findings_and_vulnerabilities(ids_to_delete)
ids_to_delete.clear
end
end
- VulnerabilitiesFinding.where(id: ids_to_delete).delete_all if ids_to_delete.any?
+ delete_findings_and_vulnerabilities(ids_to_delete) if ids_to_delete.any?
+ end
+
+ private
+
+ def delete_findings_and_vulnerabilities(ids)
+ vulnerability_ids = VulnerabilitiesFinding.where(id: ids).pluck(:vulnerability_id).compact
+ VulnerabilitiesFinding.where(id: ids).delete_all
+ Vulnerability.where(id: vulnerability_ids).delete_all
end
end