diff options
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb | 8 | ||||
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract_adapter.rb | 23 |
2 files changed, 6 insertions, 25 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb b/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb index 11e4d34de2..4e1f0e1d62 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb @@ -193,8 +193,7 @@ module ActiveRecord rescue Exception => database_transaction_rollback if transaction_open && !outside_transaction? transaction_open = false - txn = decrement_open_transactions - txn.aborted! + decrement_open_transactions if open_transactions == 0 rollback_db_transaction rollback_transaction_records(true) @@ -209,10 +208,9 @@ module ActiveRecord @transaction_joinable = last_transaction_joinable if outside_transaction? - @current_transaction = nil + @open_transactions = 0 elsif transaction_open - txn = decrement_open_transactions - txn.committed! + decrement_open_transactions begin if open_transactions == 0 commit_db_transaction diff --git a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb index 27700e4fd2..b3f9187429 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb @@ -69,7 +69,6 @@ module ActiveRecord @last_use = false @logger = logger @open_transactions = 0 - @current_transaction = nil @pool = pool @query_cache = Hash.new { |h,sql| h[sql] = {} } @query_cache_enabled = false @@ -237,30 +236,14 @@ module ActiveRecord @connection end - def open_transactions - count = 0 - txn = current_transaction - - while txn - count += 1 - txn = txn.next - end - - count - end - - attr_reader :current_transaction + attr_reader :open_transactions def increment_open_transactions - @current_transaction = Transaction.new(current_transaction) + @open_transactions += 1 end def decrement_open_transactions - return unless current_transaction - - txn = current_transaction - @current_transaction = txn.next - txn + @open_transactions -= 1 end def transaction_joinable=(joinable) |