From 653126fe996f2318049ce39b3c8f0e2907e7b8f0 Mon Sep 17 00:00:00 2001 From: Andrew Newdigate Date: Fri, 19 Jul 2019 16:09:25 +0200 Subject: Opt out of L1 cache for operations that perform invalidation --- app/models/concerns/reactive_caching.rb | 16 ++++++++-------- app/models/user.rb | 20 ++++++++++---------- app/services/base_count_service.rb | 8 ++++---- app/services/users/last_push_event_service.rb | 8 ++++---- 4 files changed, 26 insertions(+), 26 deletions(-) (limited to 'app') 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 -- cgit v1.2.1