diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-12-09 18:08:59 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-12-09 18:08:59 +0300 |
commit | fd8183c340684448fd976af9c0b4217fa58d7211 (patch) | |
tree | 45797af0b5dc7c8cc7d466ce7b816e45ceaf83b2 /lib/gitlab/instrumentation | |
parent | 5b98c2c50664b78cbf50094de6b40abcff818831 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/gitlab/instrumentation')
-rw-r--r-- | lib/gitlab/instrumentation/redis.rb | 3 | ||||
-rw-r--r-- | lib/gitlab/instrumentation/redis_base.rb | 15 | ||||
-rw-r--r-- | lib/gitlab/instrumentation/redis_payload.rb | 1 |
3 files changed, 18 insertions, 1 deletions
diff --git a/lib/gitlab/instrumentation/redis.rb b/lib/gitlab/instrumentation/redis.rb index da0061a4d99..a664656c467 100644 --- a/lib/gitlab/instrumentation/redis.rb +++ b/lib/gitlab/instrumentation/redis.rb @@ -39,7 +39,8 @@ module Gitlab end end - %i[get_request_count get_cross_slot_request_count query_time read_bytes write_bytes].each do |method| + %i[get_request_count get_cross_slot_request_count get_allowed_cross_slot_request_count query_time read_bytes + write_bytes].each do |method| define_method method do STORAGES.sum(&method) end diff --git a/lib/gitlab/instrumentation/redis_base.rb b/lib/gitlab/instrumentation/redis_base.rb index f88181820d8..de24132a28e 100644 --- a/lib/gitlab/instrumentation/redis_base.rb +++ b/lib/gitlab/instrumentation/redis_base.rb @@ -50,6 +50,11 @@ module Gitlab ::RequestStore[cross_slots_key] += amount end + def increment_allowed_cross_slot_request_count(amount = 1) + ::RequestStore[allowed_cross_slots_key] ||= 0 + ::RequestStore[allowed_cross_slots_key] += amount + end + def get_request_count ::RequestStore[request_count_key] || 0 end @@ -70,6 +75,10 @@ module Gitlab ::RequestStore[cross_slots_key] || 0 end + def get_allowed_cross_slot_request_count + ::RequestStore[allowed_cross_slots_key] || 0 + end + def query_time query_time = ::RequestStore[call_duration_key] || 0 query_time.round(::Gitlab::InstrumentationHelper::DURATION_PRECISION) @@ -85,6 +94,8 @@ module Gitlab raise RedisClusterValidator::CrossSlotError, "Redis command #{result[:command_name]} arguments hash to different slots. See https://docs.gitlab.com/ee/development/redis.html#multi-key-commands" end + increment_allowed_cross_slot_request_count if result[:allowed] + result[:valid] end @@ -144,6 +155,10 @@ module Gitlab strong_memoize(:cross_slots_key) { build_key(:redis_cross_slot_request_count) } end + def allowed_cross_slots_key + strong_memoize(:allowed_cross_slots_key) { build_key(:redis_allowed_cross_slot_request_count) } + end + def build_key(namespace) "#{storage_key}_#{namespace}" end diff --git a/lib/gitlab/instrumentation/redis_payload.rb b/lib/gitlab/instrumentation/redis_payload.rb index 3a9835410af..62a4d1a846f 100644 --- a/lib/gitlab/instrumentation/redis_payload.rb +++ b/lib/gitlab/instrumentation/redis_payload.rb @@ -21,6 +21,7 @@ module Gitlab { "#{key_prefix}_calls": -> { get_request_count }, "#{key_prefix}_cross_slot_calls": -> { get_cross_slot_request_count }, + "#{key_prefix}_allowed_cross_slot_calls": -> { get_allowed_cross_slot_request_count }, "#{key_prefix}_duration_s": -> { query_time }, "#{key_prefix}_read_bytes": -> { read_bytes }, "#{key_prefix}_write_bytes": -> { write_bytes } |