diff --git a/lib/identity_cache.rb b/lib/identity_cache.rb index 73d6b423..b643c934 100644 --- a/lib/identity_cache.rb +++ b/lib/identity_cache.rb @@ -116,6 +116,7 @@ def should_fill_cache? # :nodoc: end def should_use_cache? # :nodoc: + puts " ===> in identity_cache.rb should_use_cache? " ActiveRecord::Base.connection_handler.connection_pool_list(ActiveRecord::Base.current_role).none? do |pool| pool.active_connection? && # Rails wraps each of your tests in a transaction, so that any changes diff --git a/lib/identity_cache/cache_fetcher.rb b/lib/identity_cache/cache_fetcher.rb index 8650873e..b75aca42 100644 --- a/lib/identity_cache/cache_fetcher.rb +++ b/lib/identity_cache/cache_fetcher.rb @@ -67,6 +67,33 @@ def clear def fetch_multi(keys, &block) results = cas_multi(keys, &block) results = add_multi(keys, &block) if results.nil? + + # binding.pry + + def do_division_by_zero; 5 / 0; end + # begin + # do_division_by_zero + # rescue => exception + # puts "catch_fetcher - caught the division_by_zero exception in fetch_multi method" + # puts exception.backtrace + # # raise # always reraise + # end + + keys.each do |k| + puts "CacheFetcher - Found Product key: #{k}" if k.include?(":blob:Product:") + + if k.include?(":blob:Product:") + binding.pry + # begin + # do_division_by_zero + # rescue => exception + # puts "CacheFetcher - caught the Product key :blob:Product: with exceptions in fetch_multi method" + # puts exception.backtrace + # # raise # always reraise + # end + end + + end results end diff --git a/lib/identity_cache/cache_key_loader.rb b/lib/identity_cache/cache_key_loader.rb index 5b23480a..97b182a4 100644 --- a/lib/identity_cache/cache_key_loader.rb +++ b/lib/identity_cache/cache_key_loader.rb @@ -28,6 +28,17 @@ class << self def load(cache_fetcher, db_key, cache_fetcher_options = {}) cache_key = cache_fetcher.cache_key(db_key) + if k.include?(":blob:Product:") + binding.pry + # begin + # do_division_by_zero + # rescue => exception + # puts "CacheFetcher - caught the Product key :blob:Product: with exceptions in fetch_multi method" + # puts exception.backtrace + # # raise # always reraise + # end + end + db_value = nil cache_value = IdentityCache.fetch(cache_key, cache_fetcher_options) do diff --git a/lib/identity_cache/fallback_fetcher.rb b/lib/identity_cache/fallback_fetcher.rb index 76216089..fce7215f 100644 --- a/lib/identity_cache/fallback_fetcher.rb +++ b/lib/identity_cache/fallback_fetcher.rb @@ -22,6 +22,17 @@ def clear def fetch_multi(keys) results = @cache_backend.read_multi(*keys) + + # binding.pry + def do_division_by_zero; 5 / 0; end + begin + do_division_by_zero + rescue => exception + puts "catch_fetcher - caught the division_by_zero exception in fetch_multi method" + puts exception.backtrace + # raise # always reraise + end + missed_keys = keys - results.keys unless missed_keys.empty? replacement_results = yield missed_keys diff --git a/lib/identity_cache/memoized_cache_proxy.rb b/lib/identity_cache/memoized_cache_proxy.rb index 31e8c95a..26b0637c 100644 --- a/lib/identity_cache/memoized_cache_proxy.rb +++ b/lib/identity_cache/memoized_cache_proxy.rb @@ -106,6 +106,10 @@ def fetch_multi(*keys) result = ActiveSupport::Notifications.instrument("cache_fetch_multi.identity_cache") do |payload| payload[:resolve_miss_time] = 0.0 + keys.each do |k| + puts "MemoizedCacheProxy - Found Product key: #{k}" if k.include?(":blob:Product:") + end + result = fetch_multi_memoized(keys) do |non_memoized_keys| memo_miss_keys = non_memoized_keys @cache_fetcher.fetch_multi(non_memoized_keys) do |missing_keys|