diff options
author | Aleksei Lipniagov <alipniagov@gitlab.com> | 2019-08-16 19:14:07 +0300 |
---|---|---|
committer | Aleksei Lipniagov <alipniagov@gitlab.com> | 2019-08-16 19:14:07 +0300 |
commit | 2c811bc87b578be219d2980ac20afff4c1139f82 (patch) | |
tree | 07bc94a14f4ba356c158785679a5dafa3d3ae3f1 | |
parent | f316ce244d4f12d8325ec787c6796826b509ab30 (diff) | |
download | gitlab-ce-65278-cleanup-sidekiq-metrics-dir-on-start.tar.gz |
Apply review suggestions65278-cleanup-sidekiq-metrics-dir-on-start
Use service class instead of static module methods, style fixes
-rw-r--r-- | config.ru | 2 | ||||
-rw-r--r-- | config/initializers/7_prometheus_metrics.rb | 2 | ||||
-rw-r--r-- | lib/prometheus/cleanup_multiproc_dir.rb | 13 | ||||
-rw-r--r-- | lib/prometheus/cleanup_multiproc_dir_service.rb | 23 | ||||
-rw-r--r-- | spec/lib/prometheus/cleanup_multiproc_dir_service_spec.rb (renamed from spec/lib/prometheus/cleanup_multiproc_dir_spec.rb) | 6 |
5 files changed, 28 insertions, 18 deletions
diff --git a/config.ru b/config.ru index 048eb0d8392..750c84f7642 100644 --- a/config.ru +++ b/config.ru @@ -26,7 +26,7 @@ warmup do |app| # It needs to be done as early as here to ensure metrics files aren't deleted. # After we hit our app in `warmup`, first metrics and corresponding files already being created, # for example in `lib/gitlab/metrics/requests_rack_middleware.rb`. - Prometheus::CleanupMultiprocDir.call if master_process? + Prometheus::CleanupMultiprocDirService.new.execute if master_process? client = Rack::MockRequest.new(app) client.get('/') diff --git a/config/initializers/7_prometheus_metrics.rb b/config/initializers/7_prometheus_metrics.rb index cc5100b692c..143b34b5368 100644 --- a/config/initializers/7_prometheus_metrics.rb +++ b/config/initializers/7_prometheus_metrics.rb @@ -33,7 +33,7 @@ end Sidekiq.configure_server do |config| config.on(:startup) do # webserver metrics are cleaned up in config.ru: `warmup` block - Prometheus::CleanupMultiprocDir.call if Prometheus::PidProvider.worker_id == 'sidekiq' + Prometheus::CleanupMultiprocDirService.new.execute Gitlab::Metrics::SidekiqMetricsExporter.instance.start end diff --git a/lib/prometheus/cleanup_multiproc_dir.rb b/lib/prometheus/cleanup_multiproc_dir.rb deleted file mode 100644 index 6605455c528..00000000000 --- a/lib/prometheus/cleanup_multiproc_dir.rb +++ /dev/null @@ -1,13 +0,0 @@ -# frozen_string_literal: true - -module Prometheus - module CleanupMultiprocDir - def self.call - if dir = ::Prometheus::Client.configuration.multiprocess_files_dir - old_metrics = Dir[File.join(dir, '*.db')] - - FileUtils.rm_rf(old_metrics) - end - end - end -end diff --git a/lib/prometheus/cleanup_multiproc_dir_service.rb b/lib/prometheus/cleanup_multiproc_dir_service.rb new file mode 100644 index 00000000000..6418b4de166 --- /dev/null +++ b/lib/prometheus/cleanup_multiproc_dir_service.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module Prometheus + class CleanupMultiprocDirService + include Gitlab::Utils::StrongMemoize + + def execute + FileUtils.rm_rf(old_metrics) if old_metrics + end + + private + + def old_metrics + strong_memoize(:old_metrics) do + Dir[File.join(multiprocess_files_dir, '*.db')] if multiprocess_files_dir + end + end + + def multiprocess_files_dir + ::Prometheus::Client.configuration.multiprocess_files_dir + end + end +end diff --git a/spec/lib/prometheus/cleanup_multiproc_dir_spec.rb b/spec/lib/prometheus/cleanup_multiproc_dir_service_spec.rb index 8b694bb71cf..c7302a1a656 100644 --- a/spec/lib/prometheus/cleanup_multiproc_dir_spec.rb +++ b/spec/lib/prometheus/cleanup_multiproc_dir_service_spec.rb @@ -2,15 +2,15 @@ require 'spec_helper' -describe Prometheus::CleanupMultiprocDir do +describe Prometheus::CleanupMultiprocDirService do describe '.call' do - subject { described_class.call } + subject { described_class.new.execute } let(:metrics_multiproc_dir) { Dir.mktmpdir } let(:metrics_file_path) { File.join(metrics_multiproc_dir, 'counter_puma_master-0.db') } before do - File.new(metrics_file_path, 'w+') + FileUtils.touch(metrics_file_path) end after do |