summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorAndrew Newdigate <andrew@gitlab.com>2019-07-19 16:09:25 +0200
committerAndrew Newdigate <andrew@gitlab.com>2019-07-23 11:44:32 +0200
commit653126fe996f2318049ce39b3c8f0e2907e7b8f0 (patch)
tree5bfef646e1548408c1ec2ccb2372b43ea549d24b /app
parente45549e88cfaffc1cf1196dcdea23ec6bbc74a63 (diff)
downloadgitlab-ce-an-multi-level-cache-store.tar.gz
Opt out of L1 cache for operations that perform invalidationan-multi-level-cache-store
Diffstat (limited to 'app')
-rw-r--r--app/models/concerns/reactive_caching.rb16
-rw-r--r--app/models/user.rb20
-rw-r--r--app/services/base_count_service.rb8
-rw-r--r--app/services/users/last_push_event_service.rb8
4 files changed, 26 insertions, 26 deletions
diff --git a/app/models/concerns/reactive_caching.rb b/app/models/concerns/reactive_caching.rb
index d91be73d6f0..068f7b02320 100644
--- a/app/models/concerns/reactive_caching.rb
+++ b/app/models/concerns/reactive_caching.rb
@@ -114,7 +114,7 @@ module ReactiveCaching
keep_alive_reactive_cache!(*args)
begin
- data = Rails.cache.read(full_reactive_cache_key(*args))
+ data = Gitlab::Cache::Store.main.read(full_reactive_cache_key(*args))
yield data unless data.nil?
rescue InvalidateReactiveCache
refresh_reactive_cache!(*args)
@@ -123,8 +123,8 @@ module ReactiveCaching
end
def clear_reactive_cache!(*args)
- Rails.cache.delete(full_reactive_cache_key(*args))
- Rails.cache.delete(alive_reactive_cache_key(*args))
+ Gitlab::Cache::Store.main.delete(full_reactive_cache_key(*args))
+ Gitlab::Cache::Store.main.delete(alive_reactive_cache_key(*args))
end
def exclusively_update_reactive_cache!(*args)
@@ -133,8 +133,8 @@ module ReactiveCaching
enqueuing_update(*args) do
key = full_reactive_cache_key(*args)
new_value = calculate_reactive_cache(*args)
- old_value = Rails.cache.read(key)
- Rails.cache.write(key, new_value)
+ old_value = Gitlab::Cache::Store.main.read(key)
+ Gitlab::Cache::Store.main.write(key, new_value)
reactive_cache_updated(*args) if new_value != old_value
end
end
@@ -150,7 +150,7 @@ module ReactiveCaching
end
def keep_alive_reactive_cache!(*args)
- Rails.cache.write(alive_reactive_cache_key(*args), true, expires_in: self.class.reactive_cache_lifetime)
+ Gitlab::Cache::Store.main.write(alive_reactive_cache_key(*args), true, expires_in: self.class.reactive_cache_lifetime)
end
def full_reactive_cache_key(*qualifiers)
@@ -174,9 +174,9 @@ module ReactiveCaching
def within_reactive_cache_lifetime?(*args)
if Feature.enabled?(:reactive_caching_check_key_exists, default_enabled: true)
- Rails.cache.exist?(alive_reactive_cache_key(*args))
+ Gitlab::Cache::Store.main.exist?(alive_reactive_cache_key(*args))
else
- !!Rails.cache.read(alive_reactive_cache_key(*args))
+ !!Gitlab::Cache::Store.main.read(alive_reactive_cache_key(*args))
end
end
diff --git a/app/models/user.rb b/app/models/user.rb
index 0fd3daa3383..e55abdb8835 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -1282,31 +1282,31 @@ class User < ApplicationRecord
end
def assigned_open_merge_requests_count(force: false)
- Rails.cache.fetch(['users', id, 'assigned_open_merge_requests_count'], force: force, expires_in: 20.minutes) do
+ Gitlab::Cache::Store.main.fetch(['users', id, 'assigned_open_merge_requests_count'], force: force, expires_in: 20.minutes) do
MergeRequestsFinder.new(self, assignee_id: self.id, state: 'opened', non_archived: true).execute.count
end
end
def assigned_open_issues_count(force: false)
- Rails.cache.fetch(['users', id, 'assigned_open_issues_count'], force: force, expires_in: 20.minutes) do
+ Gitlab::Cache::Store.main.fetch(['users', id, 'assigned_open_issues_count'], force: force, expires_in: 20.minutes) do
IssuesFinder.new(self, assignee_id: self.id, state: 'opened', non_archived: true).execute.count
end
end
def todos_done_count(force: false)
- Rails.cache.fetch(['users', id, 'todos_done_count'], force: force, expires_in: 20.minutes) do
+ Gitlab::Cache::Store.main.fetch(['users', id, 'todos_done_count'], force: force, expires_in: 20.minutes) do
TodosFinder.new(self, state: :done).execute.count
end
end
def todos_pending_count(force: false)
- Rails.cache.fetch(['users', id, 'todos_pending_count'], force: force, expires_in: 20.minutes) do
+ Gitlab::Cache::Store.main.fetch(['users', id, 'todos_pending_count'], force: force, expires_in: 20.minutes) do
TodosFinder.new(self, state: :pending).execute.count
end
end
def personal_projects_count(force: false)
- Rails.cache.fetch(['users', id, 'personal_projects_count'], force: force, expires_in: 24.hours, raw: true) do
+ Gitlab::Cache::Store.main.fetch(['users', id, 'personal_projects_count'], force: force, expires_in: 24.hours, raw: true) do
personal_projects.count
end.to_i
end
@@ -1325,23 +1325,23 @@ class User < ApplicationRecord
end
def invalidate_issue_cache_counts
- Rails.cache.delete(['users', id, 'assigned_open_issues_count'])
+ Gitlab::Cache::Store.main.delete(['users', id, 'assigned_open_issues_count'])
end
def invalidate_merge_request_cache_counts
- Rails.cache.delete(['users', id, 'assigned_open_merge_requests_count'])
+ Gitlab::Cache::Store.main.delete(['users', id, 'assigned_open_merge_requests_count'])
end
def invalidate_todos_done_count
- Rails.cache.delete(['users', id, 'todos_done_count'])
+ Gitlab::Cache::Store.main.delete(['users', id, 'todos_done_count'])
end
def invalidate_todos_pending_count
- Rails.cache.delete(['users', id, 'todos_pending_count'])
+ Gitlab::Cache::Store.main.delete(['users', id, 'todos_pending_count'])
end
def invalidate_personal_projects_count
- Rails.cache.delete(['users', id, 'personal_projects_count'])
+ Gitlab::Cache::Store.main.delete(['users', id, 'personal_projects_count'])
end
# This is copied from Devise::Models::Lockable#valid_for_authentication?, as our auth
diff --git a/app/services/base_count_service.rb b/app/services/base_count_service.rb
index ad1647842b8..8de3604e8d2 100644
--- a/app/services/base_count_service.rb
+++ b/app/services/base_count_service.rb
@@ -11,11 +11,11 @@ class BaseCountService
end
def count
- Rails.cache.fetch(cache_key, cache_options) { uncached_count }.to_i
+ Gitlab::Cache::Store.main.fetch(cache_key, cache_options) { uncached_count }.to_i
end
def count_stored?
- Rails.cache.read(cache_key).present?
+ Gitlab::Cache::Store.main.read(cache_key).present?
end
def refresh_cache(&block)
@@ -27,7 +27,7 @@ class BaseCountService
end
def delete_cache
- Rails.cache.delete(cache_key)
+ Gitlab::Cache::Store.main.delete(cache_key)
end
def raw?
@@ -45,6 +45,6 @@ class BaseCountService
end
def update_cache_for_key(key, &block)
- Rails.cache.write(key, block_given? ? yield : uncached_count, raw: raw?)
+ Gitlab::Cache::Store.main.write(key, block_given? ? yield : uncached_count, raw: raw?)
end
end
diff --git a/app/services/users/last_push_event_service.rb b/app/services/users/last_push_event_service.rb
index b3980b8e32c..f06c264b1ee 100644
--- a/app/services/users/last_push_event_service.rb
+++ b/app/services/users/last_push_event_service.rb
@@ -9,7 +9,7 @@ module Users
@user = user
end
- # Caches the given push event for the current user in the Rails cache.
+ # Caches the given push event for the current user in the Gitlab::Cache::Store.main.
#
# event - An instance of PushEvent to cache.
def cache_last_push_event(event)
@@ -50,7 +50,7 @@ module Users
# We don't want to keep querying the same data over and over when a
# merge request has been created, thus we remove the key if no event
# (meaning an MR was created) is returned.
- Rails.cache.delete(cache_key)
+ Gitlab::Cache::Store.main.delete(cache_key)
end
event
@@ -75,13 +75,13 @@ module Users
end
def get_key(key)
- Rails.cache.read(key, raw: true)
+ Gitlab::Cache::Store.main.read(key, raw: true)
end
def set_key(key, value)
# We're using raw values here since this takes up less space and we don't
# store complex objects.
- Rails.cache.write(key, value, raw: true, expires_in: EXPIRATION)
+ Gitlab::Cache::Store.main.write(key, value, raw: true, expires_in: EXPIRATION)
end
end
end