diff options
author | Sean McGivern <sean@mcgivern.me.uk> | 2018-03-08 10:33:59 +0000 |
---|---|---|
committer | Ian Baum <ibaum@gitlab.com> | 2018-03-15 15:03:26 -0500 |
commit | 785169c70922be8d1f280b47374a509fbd40e58a (patch) | |
tree | bf86cadbbc6d5fb48ccbbeeb79f661a84f9542dc | |
parent | 7e01ed86152af96901231a4b495f19639fb63df4 (diff) | |
download | gitlab-ce-785169c70922be8d1f280b47374a509fbd40e58a.tar.gz |
Merge branch 'sh-remove-double-caching-repo-empty' into 'master'10-5-stable-patch-5
Remove double caching of Repository#empty?
Closes #43882
See merge request gitlab-org/gitlab-ce!17588
-rw-r--r-- | app/models/repository.rb | 8 | ||||
-rw-r--r-- | changelogs/unreleased/sh-remove-double-caching-repo-empty.yml | 5 | ||||
-rw-r--r-- | spec/models/repository_spec.rb | 2 |
3 files changed, 10 insertions, 5 deletions
diff --git a/app/models/repository.rb b/app/models/repository.rb index 4f754b11da4..da0a4c1a273 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -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 @@ -359,7 +359,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 @@ -509,12 +509,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 diff --git a/changelogs/unreleased/sh-remove-double-caching-repo-empty.yml b/changelogs/unreleased/sh-remove-double-caching-repo-empty.yml new file mode 100644 index 00000000000..1684be4e5e3 --- /dev/null +++ b/changelogs/unreleased/sh-remove-double-caching-repo-empty.yml @@ -0,0 +1,5 @@ +--- +title: Remove double caching of Repository#empty? +merge_request: +author: +type: fixed diff --git a/spec/models/repository_spec.rb b/spec/models/repository_spec.rb index 0bc07dc7a85..df05a8d49a9 100644 --- a/spec/models/repository_spec.rb +++ b/spec/models/repository_spec.rb @@ -1419,7 +1419,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 @@ -1428,7 +1427,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 |