remove needs to occur on self.conns

This commit is contained in:
Sophia Yang 2026-05-15 14:43:30 -04:00
parent b29d615f24
commit 598a6ef1b8
2 changed files with 12 additions and 6 deletions

View File

@ -964,9 +964,12 @@ class Pool:
if self.opts.max_idle_time_seconds is not None:
close_conns = []
conns = self.conns.copy()
while conns and conns[-1].idle_time_seconds() > self.opts.max_idle_time_seconds:
close_conns.append(conns.pop())
async with self.lock:
while (
self.conns
and self.conns[-1].idle_time_seconds() > self.opts.max_idle_time_seconds
):
close_conns.append(self.conns.pop())
if not _IS_SYNC:
await asyncio.gather(
*[conn.close_conn(ConnectionClosedReason.IDLE) for conn in close_conns], # type: ignore[func-returns-value]

View File

@ -960,9 +960,12 @@ class Pool:
if self.opts.max_idle_time_seconds is not None:
close_conns = []
conns = self.conns.copy()
while conns and conns[-1].idle_time_seconds() > self.opts.max_idle_time_seconds:
close_conns.append(conns.pop())
with self.lock:
while (
self.conns
and self.conns[-1].idle_time_seconds() > self.opts.max_idle_time_seconds
):
close_conns.append(self.conns.pop())
if not _IS_SYNC:
asyncio.gather(
*[conn.close_conn(ConnectionClosedReason.IDLE) for conn in close_conns], # type: ignore[func-returns-value]