Use class variables for metrics provider cache
This commit is contained in:
parent
7772dfb788
commit
ffac08d290
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue