@@ -211,22 +211,27 @@ def _commit(self):
211
211
if self .session :
212
212
with debug_transaction (self , "session.commit_transaction()" ):
213
213
self .session .commit_transaction ()
214
- self .session .end_session ()
215
- self .session = None
214
+ self ._end_session ()
216
215
217
216
@requires_transaction_support
218
217
def _rollback (self ):
219
218
if self .session :
220
219
with debug_transaction (self , "session.abort_transaction()" ):
221
220
self .session .abort_transaction ()
222
- self .session = None
221
+ self ._end_session ()
223
222
224
223
def _start_transaction (self ):
224
+ # Private API, specific to this backend.
225
225
if self .session is None :
226
226
self .session = self .connection .start_session ()
227
227
with debug_transaction (self , "session.start_transaction()" ):
228
228
self .session .start_transaction ()
229
229
230
+ def _end_session (self ):
231
+ # Private API, specific to this backend.
232
+ self .session .end_session ()
233
+ self .session = None
234
+
230
235
@requires_transaction_support
231
236
def _start_transaction_under_autocommit (self ):
232
237
# Implementing this hook (intended only for SQLite), allows
@@ -258,7 +263,8 @@ def close_pool(self):
258
263
"""Close the MongoClient."""
259
264
# Clear commit hooks and session.
260
265
self .run_on_commit = []
261
- self .session = None
266
+ if self .session :
267
+ self ._end_session ()
262
268
connection = self .connection
263
269
if connection is None :
264
270
return
0 commit comments