aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
diff options
context:
space:
mode:
authorChris Hanks <christopher.m.hanks@gmail.com>2014-01-09 23:21:41 +0000
committerChris Hanks <christopher.m.hanks@gmail.com>2014-08-22 10:58:04 -0400
commit997a62198c70c85f229bb05a4c1b63f496531cbd (patch)
treea1b44fd4577bfbb00658f25afd112bb102d67010 /activerecord/lib
parent5d7c1057684c377bc2801c8851e99ff11ab23530 (diff)
downloadrails-997a62198c70c85f229bb05a4c1b63f496531cbd.tar.gz
rails-997a62198c70c85f229bb05a4c1b63f496531cbd.tar.bz2
rails-997a62198c70c85f229bb05a4c1b63f496531cbd.zip
Roll back open transactions when the running thread is killed.
Diffstat (limited to 'activerecord/lib')
-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