summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2019-06-21 20:39:05 +0000
committerStan Hu <stanhu@gmail.com>2019-06-21 20:39:05 +0000
commitc6f54ab12b5b276dadda0639ea647e9a2b4c1781 (patch)
treea21bb9297af12d50e28375130c88e895cfd7aa36
parenteeb81259a2447b1af558cc00f2d26193f75e8b39 (diff)
parent1b7e7ddea3f5303a9c21654c0ce33ed6b6975995 (diff)
downloadgitlab-ce-c6f54ab12b5b276dadda0639ea647e9a2b4c1781.tar.gz
Merge branch '63513-ensure-gitlab-jsoncache-includes-the-gitlab-version-in-the-cache-key' into 'master'
Include the GitLab version in the cache key for Gitlab::JsonCache See merge request gitlab-org/gitlab-ce!29938
-rw-r--r--changelogs/unreleased/63513-ensure-gitlab-jsoncache-includes-the-gitlab-version-in-the-cache-key.yml5
-rw-r--r--lib/gitlab/json_cache.rb4
-rw-r--r--spec/lib/gitlab/json_cache_spec.rb68
3 files changed, 54 insertions, 23 deletions
diff --git a/changelogs/unreleased/63513-ensure-gitlab-jsoncache-includes-the-gitlab-version-in-the-cache-key.yml b/changelogs/unreleased/63513-ensure-gitlab-jsoncache-includes-the-gitlab-version-in-the-cache-key.yml
new file mode 100644
index 00000000000..b5715902630
--- /dev/null
+++ b/changelogs/unreleased/63513-ensure-gitlab-jsoncache-includes-the-gitlab-version-in-the-cache-key.yml
@@ -0,0 +1,5 @@
+---
+title: Include the GitLab version in the cache key for Gitlab::JsonCache
+merge_request: 29938
+author:
+type: fixed
diff --git a/lib/gitlab/json_cache.rb b/lib/gitlab/json_cache.rb
index 9a0b2b35112..d01183d7845 100644
--- a/lib/gitlab/json_cache.rb
+++ b/lib/gitlab/json_cache.rb
@@ -22,10 +22,10 @@ module Gitlab
expanded_cache_key = [namespace, key].compact
if cache_key_with_version
- expanded_cache_key << Rails.version
+ expanded_cache_key << [Gitlab::VERSION, Rails.version]
end
- expanded_cache_key.join(':')
+ expanded_cache_key.flatten.join(':').freeze
end
def expire(key)
diff --git a/spec/lib/gitlab/json_cache_spec.rb b/spec/lib/gitlab/json_cache_spec.rb
index c6a6042c65c..59160741c45 100644
--- a/spec/lib/gitlab/json_cache_spec.rb
+++ b/spec/lib/gitlab/json_cache_spec.rb
@@ -6,7 +6,7 @@ describe Gitlab::JsonCache do
let(:backend) { double('backend').as_null_object }
let(:namespace) { 'geo' }
let(:key) { 'foo' }
- let(:expanded_key) { "#{namespace}:#{key}:#{Rails.version}" }
+ let(:expanded_key) { "#{namespace}:#{key}:#{Gitlab::VERSION}:#{Rails.version}" }
set(:broadcast_message) { create(:broadcast_message) }
subject(:cache) { described_class.new(namespace: namespace, backend: backend) }
@@ -35,42 +35,68 @@ describe Gitlab::JsonCache do
describe '#cache_key' do
context 'when namespace is not defined' do
- it 'expands out the key with Rails version' do
- cache = described_class.new(cache_key_with_version: true)
+ context 'when cache_key_with_version is true' do
+ it 'expands out the key with GitLab, and Rails versions' do
+ cache = described_class.new(cache_key_with_version: true)
- cache_key = cache.cache_key(key)
+ cache_key = cache.cache_key(key)
- expect(cache_key).to eq("#{key}:#{Rails.version}")
+ expect(cache_key).to eq("#{key}:#{Gitlab::VERSION}:#{Rails.version}")
+ end
end
- end
- context 'when cache_key_with_version is true' do
- it 'expands out the key with namespace and Rails version' do
- cache = described_class.new(namespace: namespace, cache_key_with_version: true)
+ context 'when cache_key_with_version is false' do
+ it 'returns the key' do
+ cache = described_class.new(namespace: nil, cache_key_with_version: false)
- cache_key = cache.cache_key(key)
+ cache_key = cache.cache_key(key)
- expect(cache_key).to eq("#{namespace}:#{key}:#{Rails.version}")
+ expect(cache_key).to eq(key)
+ end
end
end
- context 'when cache_key_with_version is false' do
- it 'expands out the key with namespace' do
- cache = described_class.new(namespace: namespace, cache_key_with_version: false)
+ context 'when namespace is nil' do
+ context 'when cache_key_with_version is true' do
+ it 'expands out the key with GitLab, and Rails versions' do
+ cache = described_class.new(cache_key_with_version: true)
- cache_key = cache.cache_key(key)
+ cache_key = cache.cache_key(key)
- expect(cache_key).to eq("#{namespace}:#{key}")
+ expect(cache_key).to eq("#{key}:#{Gitlab::VERSION}:#{Rails.version}")
+ end
+ end
+
+ context 'when cache_key_with_version is false' do
+ it 'returns the key' do
+ cache = described_class.new(namespace: nil, cache_key_with_version: false)
+
+ cache_key = cache.cache_key(key)
+
+ expect(cache_key).to eq(key)
+ end
end
end
- context 'when namespace is nil, and cache_key_with_version is false' do
- it 'returns the key' do
- cache = described_class.new(namespace: nil, cache_key_with_version: false)
+ context 'when namespace is set' do
+ context 'when cache_key_with_version is true' do
+ it 'expands out the key with namespace and Rails version' do
+ cache = described_class.new(namespace: namespace, cache_key_with_version: true)
+
+ cache_key = cache.cache_key(key)
- cache_key = cache.cache_key(key)
+ expect(cache_key).to eq("#{namespace}:#{key}:#{Gitlab::VERSION}:#{Rails.version}")
+ end
+ end
- expect(cache_key).to eq(key)
+ context 'when cache_key_with_version is false' do
+ it 'expands out the key with namespace' do
+ cache = described_class.new(namespace: namespace, cache_key_with_version: false)
+
+ cache_key = cache.cache_key(key)
+
+ expect(cache_key).to eq("#{namespace}:#{key}")
+ end
end
end
end