diff options
author | Claire <claire.github-309c@sitedethib.com> | 2021-03-18 00:41:32 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-18 00:41:32 +0100 |
commit | 5027abecd1e5e511064de75fb5248139e1c8fe23 (patch) | |
tree | 52325b75c25018397019ffb41593109b52683ea8 /app | |
parent | 43eff898a0b0f31aaf042d9d387aaece2627a01d (diff) |
Fix cache_collection crashing when given an empty collection (#15921)
* Fix cache_collection crashing when given an empty collection * Add tests
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/concerns/cache_concern.rb | 4 | ||||
-rw-r--r-- | app/lib/entity_cache.rb | 4 |
2 files changed, 6 insertions, 2 deletions
diff --git a/app/controllers/concerns/cache_concern.rb b/app/controllers/concerns/cache_concern.rb index 3fb4b962a..05e431b19 100644 --- a/app/controllers/concerns/cache_concern.rb +++ b/app/controllers/concerns/cache_concern.rb @@ -31,7 +31,9 @@ module CacheConcern def cache_collection(raw, klass) return raw unless klass.respond_to?(:with_includes) - raw = raw.cache_ids.to_a if raw.is_a?(ActiveRecord::Relation) + raw = raw.cache_ids.to_a if raw.is_a?(ActiveRecord::Relation) + return [] if raw.empty? + cached_keys_with_value = Rails.cache.read_multi(*raw).transform_keys(&:id) uncached_ids = raw.map(&:id) - cached_keys_with_value.keys diff --git a/app/lib/entity_cache.rb b/app/lib/entity_cache.rb index 5d51e8585..80b0046ee 100644 --- a/app/lib/entity_cache.rb +++ b/app/lib/entity_cache.rb @@ -16,7 +16,9 @@ class EntityCache end def emoji(shortcodes, domain) - shortcodes = Array(shortcodes) + shortcodes = Array(shortcodes) + return [] if shortcodes.empty? + cached = Rails.cache.read_multi(*shortcodes.map { |shortcode| to_key(:emoji, shortcode, domain) }) uncached_ids = [] |