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