summaryrefslogtreecommitdiff
path: root/app/workers/remove_unreferenced_lfs_objects_worker.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/workers/remove_unreferenced_lfs_objects_worker.rb')
-rw-r--r--app/workers/remove_unreferenced_lfs_objects_worker.rb12
1 files changed, 10 insertions, 2 deletions
diff --git a/app/workers/remove_unreferenced_lfs_objects_worker.rb b/app/workers/remove_unreferenced_lfs_objects_worker.rb
index b42883549ca..ca4b70a0485 100644
--- a/app/workers/remove_unreferenced_lfs_objects_worker.rb
+++ b/app/workers/remove_unreferenced_lfs_objects_worker.rb
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-class RemoveUnreferencedLfsObjectsWorker # rubocop:disable Scalability/IdempotentWorker
+class RemoveUnreferencedLfsObjectsWorker
include ApplicationWorker
sidekiq_options retry: 3
@@ -10,8 +10,16 @@ class RemoveUnreferencedLfsObjectsWorker # rubocop:disable Scalability/Idempoten
# rubocop:enable Scalability/CronWorkerContext
feature_category :git_lfs
+ deduplicate :until_executed
+ idempotent!
def perform
- LfsObject.destroy_unreferenced
+ number_of_removed_files = 0
+
+ LfsObject.unreferenced_in_batches do |lfs_objects_without_projects|
+ number_of_removed_files += lfs_objects_without_projects.destroy_all.count # rubocop: disable Cop/DestroyAll
+ end
+
+ number_of_removed_files
end
end