Commit 029acedd authored by Etienne Baqué's avatar Etienne Baqué

Merge branch '300535-add-redishll-error-into-usage-ping-redis-hardening' into 'master'

Add RedisHLL errors into Usage Ping Redis hardening

See merge request gitlab-org/gitlab!54600
parents 87ddd074 a51f4e64
...@@ -24,7 +24,8 @@ ...@@ -24,7 +24,8 @@
# alt_usage_data(fallback: nil) { Gitlab.config.registry.enabled } # alt_usage_data(fallback: nil) { Gitlab.config.registry.enabled }
# #
# * redis_usage_data method # * redis_usage_data method
# handles ::Redis::CommandError, Gitlab::UsageDataCounters::BaseCounter::UnknownEvent # handles ::Redis::CommandError, Gitlab::UsageDataCounters::BaseCounter::UnknownEvent,
# Gitlab::UsageDataCounters::HLLRedisCounter::EventError
# returns -1 when a block is sent or hash with all values -1 when a counter is sent # returns -1 when a block is sent or hash with all values -1 when a counter is sent
# different behaviour due to 2 different implementations of redis counter # different behaviour due to 2 different implementations of redis counter
# #
...@@ -160,7 +161,7 @@ module Gitlab ...@@ -160,7 +161,7 @@ module Gitlab
def redis_usage_counter def redis_usage_counter
yield yield
rescue ::Redis::CommandError, Gitlab::UsageDataCounters::BaseCounter::UnknownEvent rescue ::Redis::CommandError, Gitlab::UsageDataCounters::BaseCounter::UnknownEvent, Gitlab::UsageDataCounters::HLLRedisCounter::EventError
FALLBACK FALLBACK
end end
......
...@@ -203,6 +203,12 @@ RSpec.describe Gitlab::Utils::UsageData do ...@@ -203,6 +203,12 @@ RSpec.describe Gitlab::Utils::UsageData do
expect(described_class.redis_usage_data { raise ::Redis::CommandError } ).to eq(-1) expect(described_class.redis_usage_data { raise ::Redis::CommandError } ).to eq(-1)
end end
it 'returns the fallback when Redis HLL raises any error' do
stub_const("Gitlab::Utils::UsageData::FALLBACK", 15)
expect(described_class.redis_usage_data { raise Gitlab::UsageDataCounters::HLLRedisCounter::CategoryMismatch } ).to eq(15)
end
it 'returns the evaluated block when given' do it 'returns the evaluated block when given' do
expect(described_class.redis_usage_data { 1 }).to eq(1) expect(described_class.redis_usage_data { 1 }).to eq(1)
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment