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