diff --git a/app/controllers/concerns/cached_responses.rb b/app/controllers/concerns/cached_responses.rb index 95fa2a0..05d7be1 100644 --- a/app/controllers/concerns/cached_responses.rb +++ b/app/controllers/concerns/cached_responses.rb @@ -10,7 +10,7 @@ module CachedResponses end def perform_caching - return false unless super && @response_cache_version.present? && !ActiveRecord::Base.connection.transaction_open? + return false unless super && @response_cache_version.present? && !ActiveRecord::Base.connection_pool.active_connection?&.transaction_open? # Check again after authentication, before the first native fragment lookup. # Later renders retain this immutable namespace and cannot poison a new epoch. @@ -103,7 +103,7 @@ module CachedResponses !authenticated_by.bot_key? && flash.empty? && !request.headers["If-None-Match"] && !request.headers["If-Modified-Since"] && !Rails.application.config.content_security_policy_nonce_generator && - !ActiveRecord::Base.connection.transaction_open? + !ActiveRecord::Base.connection_pool.active_connection?&.transaction_open? end def response_cache_key(encoding) diff --git a/app/models/record_cache.rb b/app/models/record_cache.rb index 03924a6..2446093 100644 --- a/app/models/record_cache.rb +++ b/app/models/record_cache.rb @@ -2,7 +2,7 @@ # The observer must still see the captured epoch after lookup and admission. class RecordCache def self.fetch(key, version) - return yield unless version && ResponseCache.instance.budget.positive? && !ActiveRecord::Base.connection.transaction_open? + return yield unless version && ResponseCache.instance.budget.positive? && !ActiveRecord::Base.connection_pool.active_connection?&.transaction_open? key = ActiveSupport::Cache.expand_cache_key([ "record-snapshot-v1", version, key ]) return yield if key.bytesize > ResponseCache::MAX_KEY_BYTES