summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksei Lipniagov <alipniagov@gitlab.com>2019-08-16 19:14:07 +0300
committerAleksei Lipniagov <alipniagov@gitlab.com>2019-08-16 19:14:07 +0300
commit2c811bc87b578be219d2980ac20afff4c1139f82 (patch)
tree07bc94a14f4ba356c158785679a5dafa3d3ae3f1
parentf316ce244d4f12d8325ec787c6796826b509ab30 (diff)
downloadgitlab-ce-65278-cleanup-sidekiq-metrics-dir-on-start.tar.gz
Use service class instead of static module methods, style fixes
-rw-r--r--config.ru2
-rw-r--r--config/initializers/7_prometheus_metrics.rb2
-rw-r--r--lib/prometheus/cleanup_multiproc_dir.rb13
-rw-r--r--lib/prometheus/cleanup_multiproc_dir_service.rb23
-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