Eliminate lease_connection call in Transactions

This commit is contained in:
Jean Boussier 2024-03-19 15:38:33 +01:00
parent ae77151fe0
commit 5bc1724535

@ -393,18 +393,19 @@ def rolledback!(force_restore_state: false, should_run_callbacks: true) # :nodoc
# This method is available within the context of an ActiveRecord::Base
# instance.
def with_transaction_returning_status
status = nil
connection = self.class.lease_connection
ensure_finalize = !connection.transaction_open?
self.class.with_connection do |connection|
status = nil
ensure_finalize = !connection.transaction_open?
connection.transaction do
add_to_transaction(ensure_finalize || has_transactional_callbacks?)
remember_transaction_record_state
connection.transaction do
add_to_transaction(ensure_finalize || has_transactional_callbacks?)
remember_transaction_record_state
status = yield
raise ActiveRecord::Rollback unless status
status = yield
raise ActiveRecord::Rollback unless status
end
status
end
status
end
def trigger_transactional_callbacks? # :nodoc:
@ -496,7 +497,9 @@ def transaction_include_any_action?(actions)
# Add the record to the current transaction so that the #after_rollback and #after_commit
# callbacks can be called.
def add_to_transaction(ensure_finalize = true)
self.class.lease_connection.add_transaction_record(self, ensure_finalize)
self.class.with_connection do |connection|
connection.add_transaction_record(self, ensure_finalize)
end
end
def has_transactional_callbacks?