aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
diff options
context:
space:
mode:
authorGodfrey Chan <godfreykfc@gmail.com>2014-08-15 13:23:55 -0700
committerGodfrey Chan <godfreykfc@gmail.com>2014-08-15 13:23:55 -0700
commit2faacbdcfb23b39518c43be91093ae760a7a7ea5 (patch)
tree8894bfbea8e8ec985eadacc794045869c21dea39 /activerecord/lib
parenta59b9e2284353dcf8cf6d77b97aaa4255563c807 (diff)
parent2e90fe736de73cfd89eed68b38e03eb6175314bc (diff)
downloadrails-2faacbdcfb23b39518c43be91093ae760a7a7ea5.tar.gz
rails-2faacbdcfb23b39518c43be91093ae760a7a7ea5.tar.bz2
rails-2faacbdcfb23b39518c43be91093ae760a7a7ea5.zip
Merge pull request #16435 from arthurnn/after_commit_run_on_top_level_trans_master
Fix regression on after_commit in nested transactions. (master)
Diffstat (limited to 'activerecord/lib')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract/transaction.rb8
1 files changed, 4 insertions, 4 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb b/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb
index 4a7f2aaca8..8f06cf3a1f 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb
@@ -111,6 +111,8 @@ module ActiveRecord
def commit
super
connection.release_savepoint(savepoint_name)
+ parent = connection.transaction_manager.current_transaction
+ records.each { |r| parent.add_record(r) }
end
def full_rollback?; false; end
@@ -169,16 +171,14 @@ module ActiveRecord
transaction = begin_transaction options
yield
rescue Exception => error
- transaction.rollback if transaction
+ rollback_transaction if transaction
raise
ensure
begin
- transaction.commit unless error
+ commit_transaction unless error
rescue Exception
transaction.rollback
raise
- ensure
- @stack.pop if transaction
end
end