summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2017-07-06 17:11:20 +0200
committerRémy Coutable <remy@rymai.me>2017-07-06 17:11:20 +0200
commitde9eca0af65e8fd235aed8c9ea598f16562956e7 (patch)
tree4b045079c29acc0d0238d7eeb2337db5e90bf707
parente5a7d1da8cfda5dc3755b6a0a1ed450415f39873 (diff)
downloadgitlab-ce-de9eca0af65e8fd235aed8c9ea598f16562956e7.tar.gz
Use Rails.cache instead of Redis directly
Signed-off-by: Rémy Coutable <remy@rymai.me>
-rw-r--r--lib/gitlab/performance_bar.rb29
-rw-r--r--spec/lib/gitlab/performance_bar_spec.rb10
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