summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Provaznik <jprovaznik@gitlab.com>2019-05-02 20:36:04 +0200
committerJan Provaznik <jprovaznik@gitlab.com>2019-05-02 20:36:04 +0200
commitfeecc0c89f1c15ae6c4ed1d0ebdec6bbb89ae45d (patch)
tree32c14e97843dfd2fba3586497bc5a4344275285e
parenta1c8d671b63bb0ee6f68e181890fbd946466d8e0 (diff)
downloadgitlab-ce-pack-refs.tar.gz
Added client spec and call cleanup for pack_refspack-refs
-rw-r--r--app/workers/git_garbage_collect_worker.rb13
-rw-r--r--spec/lib/gitlab/gitaly_client/ref_service_spec.rb11
2 files changed, 16 insertions, 8 deletions
diff --git a/app/workers/git_garbage_collect_worker.rb b/app/workers/git_garbage_collect_worker.rb
index 7c3ed274750..d4a6f53dae5 100644
--- a/app/workers/git_garbage_collect_worker.rb
+++ b/app/workers/git_garbage_collect_worker.rb
@@ -25,24 +25,21 @@ class GitGarbageCollectWorker
task = task.to_sym
project.link_pool_repository
gitaly_call(task, project.repository.raw_repository)
- cleanup(task, project) if task != :pack_refs
- ensure
- cancel_lease(lease_key, lease_uuid) if lease_key.present? && lease_uuid.present?
- end
-
- private
- def cleanup(task, project)
# Refresh the branch cache in case garbage collection caused a ref lookup to fail
flush_ref_caches(project) if task == :gc
- project.repository.expire_statistics_caches
+ project.repository.expire_statistics_caches if task != :pack_refs
# In case pack files are deleted, release libgit2 cache and open file
# descriptors ASAP instead of waiting for Ruby garbage collection
project.cleanup
+ ensure
+ cancel_lease(lease_key, lease_uuid) if lease_key.present? && lease_uuid.present?
end
+ private
+
def try_obtain_lease(key)
::Gitlab::ExclusiveLease.new(key, timeout: LEASE_TIMEOUT).try_obtain
end
diff --git a/spec/lib/gitlab/gitaly_client/ref_service_spec.rb b/spec/lib/gitlab/gitaly_client/ref_service_spec.rb
index 0dab39575b9..0bb6e582159 100644
--- a/spec/lib/gitlab/gitaly_client/ref_service_spec.rb
+++ b/spec/lib/gitlab/gitaly_client/ref_service_spec.rb
@@ -165,4 +165,15 @@ describe Gitlab::GitalyClient::RefService do
client.delete_refs(except_with_prefixes: prefixes)
end
end
+
+ describe '#pack_refs' do
+ it 'sends a pack_refs message' do
+ expect_any_instance_of(Gitaly::RefService::Stub)
+ .to receive(:pack_refs)
+ .with(gitaly_request_with_path(storage_name, relative_path), kind_of(Hash))
+ .and_return(double(:pack_refs_response))
+
+ client.pack_refs
+ end
+ end
end