gitlab/config.ru
Matthias Kaeppler 52edbc6e31 Fix: Sidekiq workers delete each other's metrics
When we moved the logic that wipes the Prometheus metrics
dir out of the Rackup file and into the initializer, all
Sidekiq workers would call this and potentially enter a
race condition where they deleted each other's database
files.

Changelog: fixed
2021-07-20 10:36:35 +02:00

26 lines
855 B
Ruby

# frozen_string_literal: true
# This file is used by Rack-based servers to start the application.
require ::File.expand_path('../config/environment', __FILE__)
def master_process?
Prometheus::PidProvider.worker_id == 'puma_master'
end
warmup do |app|
# The following is necessary to ensure stale Prometheus metrics don't accumulate over time.
# 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::CleanupMultiprocDirService.new.execute if master_process?
client = Rack::MockRequest.new(app)
client.get('/')
end
map ENV['RAILS_RELATIVE_URL_ROOT'].presence || "/" do
use Gitlab::Middleware::ReleaseEnv
run Gitlab::Application
end