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/instrumentation/redis_payload.rb')
-rw-r--r--lib/gitlab/instrumentation/redis_payload.rb37
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/gitlab/instrumentation/redis_payload.rb b/lib/gitlab/instrumentation/redis_payload.rb
new file mode 100644
index 00000000000..69aafffd124
--- /dev/null
+++ b/lib/gitlab/instrumentation/redis_payload.rb
@@ -0,0 +1,37 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Instrumentation
+ module RedisPayload
+ include ::Gitlab::Utils::StrongMemoize
+
+ # Fetches payload keys from the lazy payload (this avoids
+ # unnecessary processing of the values).
+ def known_payload_keys
+ to_lazy_payload.keys
+ end
+
+ def payload
+ to_lazy_payload.transform_values do |value|
+ result = value.call
+ result if result > 0
+ end.compact
+ end
+
+ private
+
+ def to_lazy_payload
+ strong_memoize(:to_lazy_payload) do
+ key_prefix = storage_key ? "redis_#{storage_key}" : 'redis'
+
+ {
+ "#{key_prefix}_calls": -> { get_request_count },
+ "#{key_prefix}_duration_s": -> { query_time },
+ "#{key_prefix}_read_bytes": -> { read_bytes },
+ "#{key_prefix}_write_bytes": -> { write_bytes }
+ }.symbolize_keys
+ end
+ end
+ end
+ end
+end