summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAymeric Augustin <aymeric.augustin@m4x.org>2012-11-22 20:55:50 +0100
committerAymeric Augustin <aymeric.augustin@m4x.org>2012-11-22 20:56:41 +0100
commitb9f9bc9a170430901fae188c375076f9b2cac784 (patch)
tree7d3417a8d9ac111b89ee07d0eebf49bf1f4e8c69
parent9bd67f056c6d1697d81841e3e21661069f57b14e (diff)
[1.5.x] Fixed #18984 -- Avoided a deadlock in test teardown.
Thanks Jeremy Dunck for the report. Backport of 891c530 from master.
-rw-r--r--django/test/testcases.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/django/test/testcases.py b/django/test/testcases.py
index 96178b4c86..0f76e11c1a 100644
--- a/django/test/testcases.py
+++ b/django/test/testcases.py
@@ -505,6 +505,12 @@ class TransactionTestCase(SimpleTestCase):
# If the test case has a multi_db=True flag, flush all databases.
# Otherwise, just flush default.
databases = connections if getattr(self, 'multi_db', False) else [DEFAULT_DB_ALIAS]
+
+ # Roll back any pending transactions in order to avoid a deadlock
+ # during flush when TEST_MIRROR is used (#18984).
+ for conn in connections.all():
+ conn.rollback_unless_managed()
+
for db in databases:
call_command('flush', verbosity=0, interactive=False, database=db,
skip_validation=True, reset_sequences=False)