aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract/transaction.rb6
1 files changed, 5 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb b/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb
index 90be835d8a..08b219cdd8 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb
@@ -191,7 +191,11 @@ module ActiveRecord
raise
ensure
begin
- commit_transaction unless error
+ if Thread.current.status == 'aborting'
+ rollback_transaction
+ elsif !error
+ commit_transaction
+ end
rescue Exception
transaction.rollback unless transaction.state.completed?
raise