Skip to content

Commit e2e3b56

Browse files
Avoid double close
1 parent 69ef222 commit e2e3b56

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

src/replit_river/v2/session.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ class Session:
122122
seq: int # Last sent sequence number
123123

124124
# Terminating
125-
_terminating_task: asyncio.Task[None]
125+
_terminating_task: asyncio.Task[None] | None
126126

127127
def __init__(
128128
self,
@@ -165,6 +165,9 @@ def __init__(
165165
self.ack = 0
166166
self.seq = 0
167167

168+
# Terminating
169+
self._terminating_task = None
170+
168171
self._start_heartbeat()
169172
self._start_serve_responses()
170173
self._start_close_session_checker()
@@ -192,10 +195,12 @@ async def ensure_connected[HandshakeMetadata](
192195
return
193196

194197
def do_close() -> None:
195-
# We can't just call self.close() directly because
196-
# we're inside a thread that will eventually be awaited
197-
# during the cleanup procedure.
198-
self._terminating_task = asyncio.create_task(self.close())
198+
# Avoid closing twice
199+
if self._terminating_task is None:
200+
# We can't just call self.close() directly because
201+
# we're inside a thread that will eventually be awaited
202+
# during the cleanup procedure.
203+
self._terminating_task = asyncio.create_task(self.close())
199204

200205
if not self._connecting_task:
201206
self._connecting_task = asyncio.create_task(
@@ -566,10 +571,12 @@ async def block_until_connected() -> None:
566571

567572
def _start_close_session_checker(self) -> None:
568573
def do_close() -> None:
574+
# Avoid closing twice
575+
if self._terminating_task is None:
569576
# We can't just call self.close() directly because
570577
# we're inside a thread that will eventually be awaited
571578
# during the cleanup procedure.
572-
self._terminating_task = asyncio.create_task(self.close())
579+
self._terminating_task = asyncio.create_task(self.close())
573580

574581
self._task_manager.create_task(
575582
_check_to_close_session(

0 commit comments

Comments
 (0)