Jelajahi Sumber

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

Thanks Jeremy Dunck for the report.
Aymeric Augustin 12 tahun lalu
induk
melakukan
891c530624
1 mengubah file dengan 6 tambahan dan 0 penghapusan
  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)