Class: Gitlab::RepositoryCache::Preloader
- Inherits:
-
Object
- Object
- Gitlab::RepositoryCache::Preloader
- Defined in:
- lib/gitlab/repository_cache/preloader.rb
Instance Method Summary collapse
-
#initialize(repositories) ⇒ Preloader
constructor
A new instance of Preloader.
- #preload(methods) ⇒ Object
Constructor Details
#initialize(repositories) ⇒ Preloader
Returns a new instance of Preloader.
6 7 8 |
# File 'lib/gitlab/repository_cache/preloader.rb', line 6 def initialize(repositories) @repositories = repositories end |
Instance Method Details
#preload(methods) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/gitlab/repository_cache/preloader.rb', line 10 def preload(methods) return if @repositories.empty? cache_keys = [] sources_by_cache_key = @repositories.each_with_object({}) do |repository, hash| methods.each do |method| cache_key = repository.cache.cache_key(method) hash[cache_key] = { repository: repository, method: method } cache_keys << cache_key end end Gitlab::Instrumentation::RedisClusterValidator.allow_cross_slot_commands do backend.read_multi(*cache_keys).each do |cache_key, value| source = sources_by_cache_key[cache_key] source[:repository].memoize_method_cache_value(source[:method], value) end end end |