diff options
author | Chris Hanks <christopher.m.hanks@gmail.com> | 2014-01-09 23:21:41 +0000 |
---|---|---|
committer | Chris Hanks <christopher.m.hanks@gmail.com> | 2014-08-22 10:58:04 -0400 |
commit | 997a62198c70c85f229bb05a4c1b63f496531cbd (patch) | |
tree | a1b44fd4577bfbb00658f25afd112bb102d67010 /activerecord/lib | |
parent | 5d7c1057684c377bc2801c8851e99ff11ab23530 (diff) | |
download | rails-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.rb | 6 |
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 |