瀏覽代碼

Fixed #18984 -- Avoided a deadlock in test teardown.

Thanks Jeremy Dunck for the report.
Aymeric Augustin 12 年之前
父節點
當前提交
891c530624
共有 1 個文件被更改,包括 6 次插入0 次删除
  1. 6 0
      django/test/testcases.py

+ 6 - 0
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)