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>2020-09-07 15:08:27 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-09-07 15:08:27 +0300
commita8653790086d284cecffdc35892bb422cd6c9a7b (patch)
tree8d1f4dc69026a42a47b1026eef2566c7461a52fe /lib/gitlab/cleanup
parent444f662b8d8cbe47a8f3fa1db6ed926d64f3def3 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/gitlab/cleanup')
-rw-r--r--lib/gitlab/cleanup/orphan_lfs_file_references.rb30
1 files changed, 13 insertions, 17 deletions
diff --git a/lib/gitlab/cleanup/orphan_lfs_file_references.rb b/lib/gitlab/cleanup/orphan_lfs_file_references.rb
index 3df243e319e..6710b0bba66 100644
--- a/lib/gitlab/cleanup/orphan_lfs_file_references.rb
+++ b/lib/gitlab/cleanup/orphan_lfs_file_references.rb
@@ -25,7 +25,7 @@ module Gitlab
private
def remove_orphan_references
- invalid_references = project.lfs_objects_projects.where(lfs_object: orphan_objects) # rubocop:disable CodeReuse/ActiveRecord
+ invalid_references = project.lfs_objects_projects.lfs_object_in(orphan_objects)
if dry_run
log_info("Found invalid references: #{invalid_references.count}")
@@ -41,26 +41,22 @@ module Gitlab
end
end
- def lfs_oids_from_repository
- project.repository.gitaly_blob_client.get_all_lfs_pointers.map(&:lfs_oid)
- end
-
- def orphan_oids
- lfs_oids_from_database - lfs_oids_from_repository
- end
+ def orphan_objects
+ # Get these first so racing with a git push can't remove any LFS objects
+ oids = project.lfs_objects_oids
- def lfs_oids_from_database
- oids = []
+ repos = [
+ project.repository,
+ project.design_repository,
+ project.wiki.repository
+ ].select(&:exists?)
- project.lfs_objects.each_batch do |relation|
- oids += relation.pluck(:oid) # rubocop:disable CodeReuse/ActiveRecord
+ repos.flat_map do |repo|
+ oids -= repo.gitaly_blob_client.get_all_lfs_pointers.map(&:lfs_oid)
end
- oids
- end
-
- def orphan_objects
- LfsObject.where(oid: orphan_oids) # rubocop:disable CodeReuse/ActiveRecord
+ # The remaining OIDs are not used by any repository, so are orphans
+ LfsObject.for_oids(oids)
end
def log_info(msg)