Commit 7d716cc8 authored by Pawel Chojnacki's avatar Pawel Chojnacki

Convert InfluxDB to concern. Fix uninitialized metrics when metrics code is inherited.

parent ea6196d4
module Gitlab
module Metrics
extend Gitlab::Metrics::InfluxDb
include Gitlab::Metrics::InfluxDb
include Gitlab::Metrics::Prometheus
def self.enabled?
......
......@@ -6,7 +6,7 @@ module Gitlab
extend ActiveSupport::Concern
included do
@_metric_provider_mutex = Mutex.new
@@_metric_provider_mutex = Mutex.new
@_metrics_provider_cache = {}
end
......@@ -23,12 +23,12 @@ module Gitlab
end
define_singleton_method(name) do
@_metrics_provider_cache[name] || init_metric(type, name, opts, &block)
@_metrics_provider_cache&.[](name) || init_metric(type, name, opts, &block)
end
end
def fetch_metric(type, name, opts = {}, &block)
@_metrics_provider_cache[name] || init_metric(type, name, opts, &block)
@_metrics_provider_cache&.[](name) || init_metric(type, name, opts, &block)
end
def init_metric(type, name, opts = {}, &block)
......@@ -43,7 +43,8 @@ module Gitlab
end
def synchronized_cache_fill(key)
@_metric_provider_mutex.synchronize do
@@_metric_provider_mutex.synchronize do
@_metrics_provider_cache ||= {}
@_metrics_provider_cache[key] ||= yield
end
end
......
module Gitlab
module Metrics
module InfluxDb
extend ActiveSupport::Concern
include Gitlab::Metrics::Concern
include Gitlab::CurrentSettings
extend self
EXECUTION_MEASUREMENT_BUCKETS = [0.001, 0.01, 0.1, 1].freeze
RAILS_ROOT = Rails.root.to_s
METRICS_ROOT = Rails.root.join('lib', 'gitlab', 'metrics').to_s
PATH_REGEX = /^#{RAILS_ROOT}\/?/
MUTEX = Mutex.new
private_constant :MUTEX
class_methods do
include Gitlab::CurrentSettings
def influx_metrics_enabled?
settings[:enabled] || false
end
# Prometheus histogram buckets used for arbitrary code measurements
EXECUTION_MEASUREMENT_BUCKETS = [0.001, 0.01, 0.1, 1].freeze
RAILS_ROOT = Rails.root.to_s
METRICS_ROOT = Rails.root.join('lib', 'gitlab', 'metrics').to_s
PATH_REGEX = /^#{RAILS_ROOT}\/?/
def settings
@settings ||= {
......@@ -181,4 +184,5 @@ module Gitlab
# rubocop:enable Gitlab/ModuleWithInstanceVariables
end
end
end
end
......@@ -4,13 +4,12 @@ module Gitlab
module Metrics
module Prometheus
extend ActiveSupport::Concern
include Gitlab::Metrics::Concern
include Gitlab::CurrentSettings
REGISTRY_MUTEX = Mutex.new
PROVIDER_MUTEX = Mutex.new
class_methods do
include Gitlab::CurrentSettings
include Gitlab::Utils::StrongMemoize
def metrics_folder_present?
......
......@@ -144,7 +144,10 @@ describe Gitlab::Metrics::Subscribers::RailsCache do
end
context 'with a transaction' do
let(:metric_cache_misses_total) { double('metric_cache_misses_total', increment: nil) }
before do
allow(subscriber).to receive(:metric_cache_misses_total).and_return(metric_cache_misses_total)
allow(subscriber).to receive(:current_transaction)
.and_return(transaction)
end
......@@ -157,9 +160,9 @@ describe Gitlab::Metrics::Subscribers::RailsCache do
end
it 'increments the cache_read_miss total' do
expect(subscriber.send(:metric_cache_misses_total)).to receive(:increment).with({})
subscriber.cache_generate(event)
expect(metric_cache_misses_total).to have_received(:increment).with({})
end
end
end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment