diff options
author | Jan Provaznik <jprovaznik@gitlab.com> | 2019-05-02 20:36:04 +0200 |
---|---|---|
committer | Jan Provaznik <jprovaznik@gitlab.com> | 2019-05-02 20:36:04 +0200 |
commit | feecc0c89f1c15ae6c4ed1d0ebdec6bbb89ae45d (patch) | |
tree | 32c14e97843dfd2fba3586497bc5a4344275285e | |
parent | a1c8d671b63bb0ee6f68e181890fbd946466d8e0 (diff) | |
download | gitlab-ce-pack-refs.tar.gz |
Added client spec and call cleanup for pack_refspack-refs
-rw-r--r-- | app/workers/git_garbage_collect_worker.rb | 13 | ||||
-rw-r--r-- | spec/lib/gitlab/gitaly_client/ref_service_spec.rb | 11 |
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 |