@@ -65,7 +65,6 @@ def __init__(
6565 max_await_time_ms : Optional [int ] = None ,
6666 session : Optional [AsyncClientSession ] = None ,
6767 comment : Any = None ,
68- leave_session_alive : bool = False ,
6968 ) -> None :
7069 """Create a new command cursor."""
7170 self ._sock_mgr : Any = None
@@ -84,7 +83,6 @@ def __init__(
8483 self ._session .attached_to_cursor = True
8584 self ._killed = self ._id == 0
8685 self ._comment = comment
87- self ._leave_session_alive = leave_session_alive
8886 if self ._killed :
8987 self ._end_session ()
9088
@@ -222,9 +220,9 @@ def _die_no_lock(self) -> None:
222220 self ._collection .database .client ._cleanup_cursor_no_lock (
223221 cursor_id , address , self ._sock_mgr , self ._session
224222 )
225- if self ._session :
226- if self ._session .implicit :
227- self ._session = None
223+ if self ._session and self . _session . implicit :
224+ self ._session .attached_to_cursor = False
225+ self ._session = None
228226 self ._sock_mgr = None
229227
230228 async def _die_lock (self ) -> None :
@@ -236,18 +234,16 @@ async def _die_lock(self) -> None:
236234 self ._sock_mgr ,
237235 self ._session ,
238236 )
239- if self ._session :
240- if self ._session .implicit :
241- self ._session = None
237+ if self ._session and self . _session . implicit :
238+ self ._session .attached_to_cursor = False
239+ self ._session = None
242240 self ._sock_mgr = None
243241
244242 def _end_session (self ) -> None :
245- if self ._session and self ._session .implicit :
243+ if self ._session and self ._session .implicit and not self . _session . leave_alive :
246244 self ._session .attached_to_cursor = False
247- if not self ._leave_session_alive :
248- # print(f"Ending session {self}, session: {self._session}")
249- self ._session ._end_implicit_session ()
250- self ._session = None
245+ self ._session ._end_implicit_session ()
246+ self ._session = None
251247
252248 async def close (self ) -> None :
253249 """Explicitly close / kill this cursor."""
0 commit comments