Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Kozono <mkozono@gmail.com>2018-09-25 20:12:51 +0300
committerMichael Kozono <mkozono@gmail.com>2018-09-28 04:22:37 +0300
commit3640292bf2ef822c8e2394fa2397b1b7d04e9891 (patch)
treee6083dca766e7acfb94b613329a43c98a8aa526b /lib/gitlab/repository_cache.rb
parentd9c4ebc5a0b2e911f17865e482de1dfcc2189ac3 (diff)
Cache `Repository#exists?` false in RequestStore
* Only truthy values are cached in Redis. * All values are cached in RequestStore and in an instance variable.
Diffstat (limited to 'lib/gitlab/repository_cache.rb')
-rw-r--r--lib/gitlab/repository_cache.rb16
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/gitlab/repository_cache.rb b/lib/gitlab/repository_cache.rb
index b1bf3ca4143..a03ce07b6a1 100644
--- a/lib/gitlab/repository_cache.rb
+++ b/lib/gitlab/repository_cache.rb
@@ -29,5 +29,21 @@ module Gitlab
def read(key)
backend.read(cache_key(key))
end
+
+ def write(key, value)
+ backend.write(cache_key(key), value)
+ end
+
+ def fetch_without_caching_false(key, &block)
+ value = read(key)
+ return value if value
+
+ value = yield
+
+ # Don't cache false values
+ write(key, value) if value
+
+ value
+ end
end
end