Use class variables for metrics provider cache

This commit is contained in:
Pawel Chojnacki 2018-01-22 20:52:41 +01:00
parent 7772dfb788
commit ffac08d290
1 changed files with 5 additions and 6 deletions

View File

@ -7,12 +7,12 @@ module Gitlab
included do included do
@@_metric_provider_mutex ||= Mutex.new @@_metric_provider_mutex ||= Mutex.new
@_metrics_provider_cache = {} @@_metrics_provider_cache = {}
end end
class_methods do class_methods do
def reload_metric!(name) def reload_metric!(name)
@_metrics_provider_cache.delete(name) @@_metrics_provider_cache.delete(name)
end end
private private
@ -23,12 +23,12 @@ module Gitlab
end end
define_singleton_method(name) do 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
end end
def fetch_metric(type, name, opts = {}, &block) 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 end
def init_metric(type, name, opts = {}, &block) def init_metric(type, name, opts = {}, &block)
@ -44,8 +44,7 @@ module Gitlab
def synchronized_cache_fill(key) def synchronized_cache_fill(key)
@@_metric_provider_mutex.synchronize do @@_metric_provider_mutex.synchronize do
@_metrics_provider_cache ||= {} @@_metrics_provider_cache[key] ||= yield
@_metrics_provider_cache[key] ||= yield
end end
end end