summaryrefslogtreecommitdiff
path: root/app/workers/concerns/git_garbage_collect_methods.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/workers/concerns/git_garbage_collect_methods.rb')
-rw-r--r--app/workers/concerns/git_garbage_collect_methods.rb32
1 files changed, 21 insertions, 11 deletions
diff --git a/app/workers/concerns/git_garbage_collect_methods.rb b/app/workers/concerns/git_garbage_collect_methods.rb
index c46deeb716f..13b7e7b5b1f 100644
--- a/app/workers/concerns/git_garbage_collect_methods.rb
+++ b/app/workers/concerns/git_garbage_collect_methods.rb
@@ -83,17 +83,27 @@ module GitGarbageCollectMethods
def gitaly_call(task, resource)
repository = resource.repository.raw_repository
- client = get_gitaly_client(task, repository)
-
- case task
- when :prune, :gc
- client.garbage_collect(bitmaps_enabled?, prune: task == :prune)
- when :full_repack
- client.repack_full(bitmaps_enabled?)
- when :incremental_repack
- client.repack_incremental
- when :pack_refs
- client.pack_refs
+ if Feature.enabled?(:optimized_housekeeping, container(resource), default_enabled: :yaml)
+ client = repository.gitaly_repository_client
+
+ if task == :prune
+ client.prune_unreachable_objects
+ else
+ client.optimize_repository
+ end
+ else
+ client = get_gitaly_client(task, repository)
+
+ case task
+ when :prune, :gc
+ client.garbage_collect(bitmaps_enabled?, prune: task == :prune)
+ when :full_repack
+ client.repack_full(bitmaps_enabled?)
+ when :incremental_repack
+ client.repack_incremental
+ when :pack_refs
+ client.pack_refs
+ end
end
rescue GRPC::NotFound => e
Gitlab::GitLogger.error("#{__method__} failed:\nRepository not found")