Skip to content

Commit

Permalink
[1.6.x] Tested exc_type instead of exc_value in __exit__.
Browse files Browse the repository at this point in the history
exc_value might be None even though there's an exception, at least on
Python 2.6. Thanks Thomas Chaumeny for the report.

Fixed #21034.
  • Loading branch information
aaugustin committed Sep 4, 2013
1 parent 7c1efc2 commit a8624b2
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions django/db/transaction.py
Expand Up @@ -289,7 +289,7 @@ def __exit__(self, exc_type, exc_value, traceback):
connection.in_atomic_block = False connection.in_atomic_block = False


try: try:
if exc_value is None and not connection.needs_rollback: if exc_type is None and not connection.needs_rollback:
if connection.in_atomic_block: if connection.in_atomic_block:
# Release savepoint if there is one # Release savepoint if there is one
if sid is not None: if sid is not None:
Expand Down Expand Up @@ -389,7 +389,7 @@ def __enter__(self):
self.entering(self.using) self.entering(self.using)


def __exit__(self, exc_type, exc_value, traceback): def __exit__(self, exc_type, exc_value, traceback):
self.exiting(exc_value, self.using) self.exiting(exc_type, self.using)


def __call__(self, func): def __call__(self, func):
@wraps(func) @wraps(func)
Expand Down Expand Up @@ -431,7 +431,7 @@ def autocommit(using=None):
def entering(using): def entering(using):
enter_transaction_management(managed=False, using=using) enter_transaction_management(managed=False, using=using)


def exiting(exc_value, using): def exiting(exc_type, using):
leave_transaction_management(using=using) leave_transaction_management(using=using)


return _transaction_func(entering, exiting, using) return _transaction_func(entering, exiting, using)
Expand All @@ -449,9 +449,9 @@ def commit_on_success(using=None):
def entering(using): def entering(using):
enter_transaction_management(using=using) enter_transaction_management(using=using)


def exiting(exc_value, using): def exiting(exc_type, using):
try: try:
if exc_value is not None: if exc_type is not None:
if is_dirty(using=using): if is_dirty(using=using):
rollback(using=using) rollback(using=using)
else: else:
Expand Down Expand Up @@ -479,7 +479,7 @@ def commit_manually(using=None):
def entering(using): def entering(using):
enter_transaction_management(using=using) enter_transaction_management(using=using)


def exiting(exc_value, using): def exiting(exc_type, using):
leave_transaction_management(using=using) leave_transaction_management(using=using)


return _transaction_func(entering, exiting, using) return _transaction_func(entering, exiting, using)
Expand All @@ -502,7 +502,7 @@ def commit_on_success_unless_managed(using=None, savepoint=False):
def entering(using): def entering(using):
pass pass


def exiting(exc_value, using): def exiting(exc_type, using):
set_dirty(using=using) set_dirty(using=using)


return _transaction_func(entering, exiting, using) return _transaction_func(entering, exiting, using)

0 comments on commit a8624b2

Please sign in to comment.