Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/cache/client.rb')
-rw-r--r--lib/gitlab/cache/client.rb43
1 files changed, 11 insertions, 32 deletions
diff --git a/lib/gitlab/cache/client.rb b/lib/gitlab/cache/client.rb
index 37d6cac8d43..1e2962a5151 100644
--- a/lib/gitlab/cache/client.rb
+++ b/lib/gitlab/cache/client.rb
@@ -5,61 +5,40 @@ module Gitlab
# It replaces Rails.cache with metrics support
class Client
DEFAULT_BACKING_RESOURCE = :unknown
+ DEFAULT_FEATURE_CATEGORY = :not_owned
- # Build Cache client with the metadata support
- #
- # @param cache_identifier [String] defines the location of the cache definition
- # Example: "ProtectedBranches::CacheService#fetch"
- # @param feature_category [Symbol] name of the feature category (from config/feature_categories.yml)
- # @param backing_resource [Symbol] most affected resource by cache generation (full list: VALID_BACKING_RESOURCES)
- # @return [Gitlab::Cache::Client]
- def self.build_with_metadata(
- cache_identifier:,
- feature_category:,
- backing_resource: DEFAULT_BACKING_RESOURCE
- )
- new(Metadata.new(
- cache_identifier: cache_identifier,
- feature_category: feature_category,
- backing_resource: backing_resource
- ))
- end
-
- def initialize(metadata, backend: Rails.cache)
- @metadata = metadata
- @metrics = Metrics.new(metadata)
+ def initialize(metrics, backend: Rails.cache)
+ @metrics = metrics
@backend = backend
end
- def read(name)
- read_result = backend.read(name)
+ def read(name, options = nil, labels = {})
+ read_result = backend.read(name, options)
if read_result.nil?
- metrics.increment_cache_miss
+ metrics.increment_cache_miss(labels)
else
- metrics.increment_cache_hit
+ metrics.increment_cache_hit(labels)
end
read_result
end
- def fetch(name, options = nil, &block)
- read_result = read(name)
+ def fetch(name, options = nil, labels = {}, &block)
+ read_result = read(name, options, labels)
return read_result unless block || read_result
backend.fetch(name, options) do
- metrics.observe_cache_generation(&block)
+ metrics.observe_cache_generation(labels, &block)
end
end
delegate :write, :exist?, :delete, to: :backend
- attr_reader :metadata, :metrics
-
private
- attr_reader :backend
+ attr_reader :metrics, :backend
end
end
end