diff options
-rw-r--r-- | lib/gitlab/performance_bar.rb | 29 | ||||
-rw-r--r-- | spec/lib/gitlab/performance_bar_spec.rb | 10 |
2 files changed, 8 insertions, 31 deletions
diff --git a/lib/gitlab/performance_bar.rb b/lib/gitlab/performance_bar.rb index 85f4371ec23..f48d0506994 100644 --- a/lib/gitlab/performance_bar.rb +++ b/lib/gitlab/performance_bar.rb @@ -3,7 +3,7 @@ module Gitlab ALLOWED_USER_IDS_KEY = 'performance_bar_allowed_user_ids'.freeze # The time (in seconds) after which a set of allowed user IDs is expired # automatically. - ALLOWED_USER_IDS_TIME_TO_LIVE = 10.minutes.to_i + ALLOWED_USER_IDS_TIME_TO_LIVE = 10.minutes def self.enabled?(current_user = nil) Feature.enabled?(:gitlab_performance_bar, current_user) @@ -20,28 +20,13 @@ module Gitlab end def self.allowed_user_ids - Gitlab::Redis.with do |redis| - if redis.exists(cache_key) - redis.smembers(cache_key).map(&:to_i) - else - group = Group.find_by_full_path(allowed_group_name) - # Redis#sadd doesn't accept an empty array, but we still want to use - # Redis to let us know that no users are allowed, so we set the - # array to [-1] in this case. - user_ids = - if group - GroupMembersFinder.new(group).execute - .pluck(:user_id).presence || [-1] - else - [-1] - end - - redis.multi do - redis.sadd(cache_key, user_ids) - redis.expire(cache_key, ALLOWED_USER_IDS_TIME_TO_LIVE) - end + Rails.cache.fetch(cache_key, expires_in: ALLOWED_USER_IDS_TIME_TO_LIVE) do + group = Group.find_by_full_path(allowed_group_name) - user_ids + if group + GroupMembersFinder.new(group).execute.pluck(:user_id) + else + [] end end end diff --git a/spec/lib/gitlab/performance_bar_spec.rb b/spec/lib/gitlab/performance_bar_spec.rb index ecdecc03304..6414bdb80ed 100644 --- a/spec/lib/gitlab/performance_bar_spec.rb +++ b/spec/lib/gitlab/performance_bar_spec.rb @@ -31,19 +31,11 @@ describe Gitlab::PerformanceBar do described_class.allowed_user?(user) end - it 'caches the allowed user IDs in Redis', :redis do + it 'caches the allowed user IDs in cache', :caching do expect do expect(described_class.allowed_user?(user)).to be_truthy end.not_to exceed_query_limit(0) end - - it 'caches the allowed user IDs for 10 minutes', :redis do - ttl_cached_user_ids = Gitlab::Redis.with do |redis| - redis.ttl(described_class.cache_key) - end - - expect(ttl_cached_user_ids).to be <= 10.minutes - end end describe '.allowed_user?' do |