aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib
diff options
context:
space:
mode:
authorJeremy Daer <jeremydaer@gmail.com>2015-10-09 13:57:01 -0700
committerJeremy Daer <jeremydaer@gmail.com>2015-10-09 13:58:49 -0700
commit0450642c27af3af35b449208b21695fd55c30f90 (patch)
treef75f1680efee7eaf9fbf90f31594c230fd363130 /activesupport/lib
parent5c7e99257818c84ce4c70a34c2411cb671bcf995 (diff)
parentedd33c08d98723ae9bb89cf7f019277117ed6414 (diff)
downloadrails-0450642c27af3af35b449208b21695fd55c30f90.tar.gz
rails-0450642c27af3af35b449208b21695fd55c30f90.tar.bz2
rails-0450642c27af3af35b449208b21695fd55c30f90.zip
Merge pull request #21631 from RobinClowers/fix-cache-instrumentation
Fix cache fetch instrumentation
Diffstat (limited to 'activesupport/lib')
-rw-r--r--activesupport/lib/active_support/cache.rb24
1 files changed, 11 insertions, 13 deletions
diff --git a/activesupport/lib/active_support/cache.rb b/activesupport/lib/active_support/cache.rb
index 8253a76383..3996f583c2 100644
--- a/activesupport/lib/active_support/cache.rb
+++ b/activesupport/lib/active_support/cache.rb
@@ -277,13 +277,18 @@ module ActiveSupport
options = merged_options(options)
key = namespaced_key(name, options)
- cached_entry = find_cached_entry(key, name, options) unless options[:force]
- entry = handle_expired_entry(cached_entry, key, options)
+ instrument(:read, name, options) do |payload|
+ cached_entry = read_entry(key, options) unless options[:force]
+ payload[:super_operation] = :fetch if payload
+ entry = handle_expired_entry(cached_entry, key, options)
- if entry
- get_entry_value(entry, name, options)
- else
- save_block_result_to_cache(name, options) { |_name| yield _name }
+ if entry
+ payload[:hit] = true if payload
+ get_entry_value(entry, name, options)
+ else
+ payload[:hit] = false if payload
+ save_block_result_to_cache(name, options) { |_name| yield _name }
+ end
end
else
read(name, options)
@@ -556,13 +561,6 @@ module ActiveSupport
logger.debug(yield)
end
- def find_cached_entry(key, name, options)
- instrument(:read, name, options) do |payload|
- payload[:super_operation] = :fetch if payload
- read_entry(key, options)
- end
- end
-
def handle_expired_entry(entry, key, options)
if entry && entry.expired?
race_ttl = options[:race_condition_ttl].to_i