diff options
author | Mark Longair <mhl@pobox.com> | 2013-10-07 12:36:28 +0100 |
---|---|---|
committer | Mark Longair <mhl@pobox.com> | 2013-10-07 12:53:32 +0100 |
commit | ad9036d42de5bd799ca7313c9f3086fffc68136f (patch) | |
tree | 19a15687dadb8c503cb169035eb9e14ca4920388 /public/javascripts/jquery-ui.min.js | |
parent | 4d648e3e39c9ff0d721f1bf06266893a39c9b118 (diff) |
Fix for an aborted transaction not being rolled-back
We were seeing errors in xapian_create_job that indicated that the
current transaction had been aborted but not rolled-back. It seems
that this happened because sometimes xapian_create_job was called
from within another transaction (e.g. from the transaction block in
AdminIncomingMessageController#redeliver). The default behaviour
of nested transactions in Rails is for them to behave as if all
but the outermost transaction blocks had no effect; this means
that the exception thrown in the inner transaction block in
xapian_create_job wasn't causing a rollback, and it was then being
caught before propagating up to the outermost transaction. Thus
the transaction was never being rolled-back so any subsequent
operation on this database connection would error.
This commit fixes this problem by using the :requires_new => true
option to transaction, which asks ActiveRecord to fake genuinely
nested transcations using SAVEPOINT.
Fixes #1124.
Diffstat (limited to 'public/javascripts/jquery-ui.min.js')
0 files changed, 0 insertions, 0 deletions