From 285d5d526b1d568580b63488b8832cfc9ef19077 Mon Sep 17 00:00:00 2001 From: Bastian Blank Date: Mon, 5 Feb 2018 17:36:51 +0000 Subject: Close low level rugged repository in project cache worker Signed-off-by: Bastian Blank --- app/models/project.rb | 5 ++++- app/models/repository.rb | 4 ++++ app/workers/project_cache_worker.rb | 2 ++ changelogs/unreleased/42730-close-rugged-repository.yml | 5 +++++ lib/gitlab/git/repository.rb | 4 ++++ 5 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 changelogs/unreleased/42730-close-rugged-repository.yml diff --git a/app/models/project.rb b/app/models/project.rb index 12d5f28f5ea..33085151217 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -511,10 +511,13 @@ class Project < ActiveRecord::Base @repository ||= Repository.new(full_path, self, disk_path: disk_path) end - def reload_repository! + def cleanup + @repository&.cleanup @repository = nil end + alias_method :reload_repository!, :cleanup + def container_registry_url if Gitlab.config.registry.enabled "#{Gitlab.config.registry.host_port}/#{full_path.downcase}" diff --git a/app/models/repository.rb b/app/models/repository.rb index f1abe5c3e07..3d6f8f0c305 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -93,6 +93,10 @@ class Repository alias_method :raw, :raw_repository + def cleanup + @raw_repository&.cleanup + end + # Return absolute path to repository def path_to_repo @path_to_repo ||= File.expand_path( diff --git a/app/workers/project_cache_worker.rb b/app/workers/project_cache_worker.rb index f19bcbf946a..a993b4b2680 100644 --- a/app/workers/project_cache_worker.rb +++ b/app/workers/project_cache_worker.rb @@ -18,6 +18,8 @@ class ProjectCacheWorker update_statistics(project, statistics.map(&:to_sym)) project.repository.refresh_method_caches(files.map(&:to_sym)) + + project.cleanup end def update_statistics(project, statistics = []) diff --git a/changelogs/unreleased/42730-close-rugged-repository.yml b/changelogs/unreleased/42730-close-rugged-repository.yml new file mode 100644 index 00000000000..a632f5030a5 --- /dev/null +++ b/changelogs/unreleased/42730-close-rugged-repository.yml @@ -0,0 +1,5 @@ +--- +title: Close low level rugged repository in project cache worker +merge_request: 16930 +author: Bastian Blank +type: fixed diff --git a/lib/gitlab/git/repository.rb b/lib/gitlab/git/repository.rb index ab1362a3bb0..09fb3999d83 100644 --- a/lib/gitlab/git/repository.rb +++ b/lib/gitlab/git/repository.rb @@ -128,6 +128,10 @@ module Gitlab raise NoRepository.new('no repository for such path') end + def cleanup + @rugged&.close + end + def circuit_breaker @circuit_breaker ||= Gitlab::Git::Storage::CircuitBreaker.for_storage(storage) end -- cgit v1.2.1