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:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-05-27 18:10:39 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-05-27 18:10:39 +0300
commitf719944deedf392d98947cb1c499169696c8da70 (patch)
tree246cfc50c88569edf1077b2e4927df4154f77150 /app/models
parent0afd7f18171f70cb8f4296ff9a32381c6919027f (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/models')
-rw-r--r--app/models/lfs_object.rb15
1 files changed, 9 insertions, 6 deletions
diff --git a/app/models/lfs_object.rb b/app/models/lfs_object.rb
index 49bd453c645..53e7d52c558 100644
--- a/app/models/lfs_object.rb
+++ b/app/models/lfs_object.rb
@@ -18,6 +18,8 @@ class LfsObject < ApplicationRecord
mount_file_store_uploader LfsObjectUploader
+ BATCH_SIZE = 3000
+
def self.not_linked_to_project(project)
where('NOT EXISTS (?)',
project.lfs_objects_projects.select(1).where('lfs_objects_projects.lfs_object_id = lfs_objects.id'))
@@ -37,13 +39,14 @@ class LfsObject < ApplicationRecord
file_store == LfsObjectUploader::Store::LOCAL
end
- # rubocop: disable Cop/DestroyAll
- def self.destroy_unreferenced
- joins("LEFT JOIN lfs_objects_projects ON lfs_objects_projects.lfs_object_id = #{table_name}.id")
- .where(lfs_objects_projects: { id: nil })
- .destroy_all
+ def self.unreferenced_in_batches
+ each_batch(of: BATCH_SIZE, order: :desc) do |lfs_objects|
+ relation = lfs_objects.where('NOT EXISTS (?)',
+ LfsObjectsProject.select(1).where('lfs_objects_projects.lfs_object_id = lfs_objects.id'))
+
+ yield relation if relation.any?
+ end
end
- # rubocop: enable Cop/DestroyAll
def self.calculate_oid(path)
self.hexdigest(path)