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/metrics/subscribers/rails_cache.rb')
-rw-r--r--lib/gitlab/metrics/subscribers/rails_cache.rb34
1 files changed, 22 insertions, 12 deletions
diff --git a/lib/gitlab/metrics/subscribers/rails_cache.rb b/lib/gitlab/metrics/subscribers/rails_cache.rb
index b4e9e85a012..e2cdd6c5358 100644
--- a/lib/gitlab/metrics/subscribers/rails_cache.rb
+++ b/lib/gitlab/metrics/subscribers/rails_cache.rb
@@ -13,7 +13,7 @@ module Gitlab
return unless current_transaction
- labels = { store: event.payload[:store].split('::').last }
+ labels = { store: extract_store_name(event) }
current_transaction.observe(:gitlab_cache_read_multikey_count, event.payload[:key].size, labels) do
buckets [10, 50, 100, 1000]
docstring 'Number of keys for mget in read_multi/fetch_multi'
@@ -26,11 +26,7 @@ module Gitlab
return unless current_transaction
return if event.payload[:super_operation] == :fetch
- unless event.payload[:hit]
- current_transaction.increment(:gitlab_cache_misses_total, 1) do
- docstring 'Cache read miss'
- end
- end
+ track_cache_miss(event) unless event.payload[:hit]
end
def cache_write(event)
@@ -48,23 +44,23 @@ module Gitlab
def cache_fetch_hit(event)
return unless current_transaction
- current_transaction.increment(:gitlab_transaction_cache_read_hit_count_total, 1)
+ labels = { store: extract_store_name(event) }
+ current_transaction.increment(:gitlab_transaction_cache_read_hit_count_total, 1, labels)
end
def cache_generate(event)
return unless current_transaction
- current_transaction.increment(:gitlab_cache_misses_total, 1) do
- docstring 'Cache read miss'
- end
+ track_cache_miss(event)
- current_transaction.increment(:gitlab_transaction_cache_read_miss_count_total, 1)
+ labels = { store: extract_store_name(event) }
+ current_transaction.increment(:gitlab_transaction_cache_read_miss_count_total, 1, labels)
end
def observe(key, event)
return unless current_transaction
- labels = { operation: key, store: event.payload[:store].split('::').last }
+ labels = { operation: key, store: extract_store_name(event) }
current_transaction.increment(:gitlab_cache_operations_total, 1, labels) do
docstring 'Cache operations'
@@ -76,6 +72,20 @@ module Gitlab
private
+ def track_cache_miss(event)
+ # avoid passing in labels to ensure metric has consistent set of labels
+ labels = { store: extract_store_name(event) }
+
+ current_transaction.increment(:gitlab_cache_misses_total, 1, labels) do
+ docstring 'Cache read miss'
+ end
+ end
+
+ def extract_store_name(event)
+ # see payload documentation in https://guides.rubyonrails.org/active_support_instrumentation.html#active-support
+ event.payload[:store].to_s.split('::').last
+ end
+
def current_transaction
::Gitlab::Metrics::WebTransaction.current
end