Skip to content

Commit fb05586

Browse files
committed
INTPYTHON-772 Fix transaction.atomic() crash if connection isn't initialized
1 parent e747973 commit fb05586

File tree

3 files changed

+9
-2
lines changed

3 files changed

+9
-2
lines changed

django_mongodb_backend/base.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,7 @@ def get_database_version(self):
272272
@async_unsafe
273273
def start_transaction_mongo(self):
274274
if self.session is None:
275+
self.ensure_connection()
275276
self.session = self.connection.start_session()
276277
with debug_transaction(self, "session.start_transaction()"):
277278
self.session.start_transaction()

docs/releases/5.2.x.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ New features
1515
Bug fixes
1616
---------
1717

18-
- ...
18+
- Fixed ``transaction.atomic()`` crash if the connection isn't initialized.
1919

2020
Deprecated features
2121
-------------------

tests/transactions_/tests.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from django.db import DatabaseError
1+
from django.db import DatabaseError, connection
22
from django.test import TransactionTestCase, skipIfDBFeature, skipUnlessDBFeature
33

44
from django_mongodb_backend import transaction
@@ -140,6 +140,12 @@ def __call__(self):
140140

141141
transaction.atomic(Callable()) # Must not raise an exception
142142

143+
def test_initializes_connection(self):
144+
"""transaction.atomic() opens the connection if needed."""
145+
connection.close_pool()
146+
with transaction.atomic():
147+
pass
148+
143149

144150
@skipIfDBFeature("_supports_transactions")
145151
class AtomicNotSupportedTests(TransactionTestCase):

0 commit comments

Comments
 (0)