Merge branch 'sh-remove-double-caching-repo-empty' into 'master'
Remove double caching of Repository#empty? Closes #43882 See merge request gitlab-org/gitlab-ce!17588
This commit is contained in:
commit
15b4e9815e
|
@ -35,7 +35,7 @@ class Repository
|
|||
CACHED_METHODS = %i(size commit_count rendered_readme contribution_guide
|
||||
changelog license_blob license_key gitignore koding_yml
|
||||
gitlab_ci_yml branch_names tag_names branch_count
|
||||
tag_count avatar exists? empty? root_ref has_visible_content?
|
||||
tag_count avatar exists? root_ref has_visible_content?
|
||||
issue_template_names merge_request_template_names).freeze
|
||||
|
||||
# Methods that use cache_method but only memoize the value
|
||||
|
@ -360,7 +360,7 @@ class Repository
|
|||
def expire_emptiness_caches
|
||||
return unless empty?
|
||||
|
||||
expire_method_caches(%i(empty? has_visible_content?))
|
||||
expire_method_caches(%i(has_visible_content?))
|
||||
end
|
||||
|
||||
def lookup_cache
|
||||
|
@ -506,12 +506,14 @@ class Repository
|
|||
end
|
||||
cache_method :exists?
|
||||
|
||||
# We don't need to cache the output of this method because both exists? and
|
||||
# has_visible_content? are already memoized and cached. There's no guarantee
|
||||
# that the values are expired and loaded atomically.
|
||||
def empty?
|
||||
return true unless exists?
|
||||
|
||||
!has_visible_content?
|
||||
end
|
||||
cache_method :empty?
|
||||
|
||||
# The size of this repository in megabytes.
|
||||
def size
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Remove double caching of Repository#empty?
|
||||
merge_request:
|
||||
author:
|
||||
type: fixed
|
|
@ -1447,7 +1447,6 @@ describe Repository do
|
|||
it 'expires the caches for an empty repository' do
|
||||
allow(repository).to receive(:empty?).and_return(true)
|
||||
|
||||
expect(cache).to receive(:expire).with(:empty?)
|
||||
expect(cache).to receive(:expire).with(:has_visible_content?)
|
||||
|
||||
repository.expire_emptiness_caches
|
||||
|
@ -1456,7 +1455,6 @@ describe Repository do
|
|||
it 'does not expire the cache for a non-empty repository' do
|
||||
allow(repository).to receive(:empty?).and_return(false)
|
||||
|
||||
expect(cache).not_to receive(:expire).with(:empty?)
|
||||
expect(cache).not_to receive(:expire).with(:has_visible_content?)
|
||||
|
||||
repository.expire_emptiness_caches
|
||||
|
|
Loading…
Reference in New Issue