Message318360
Server.wait_closed() currently does two checks:
1. if _sockets is None -- means that Server.close() was called
2. if self._waiters is None -- means that Server._wakeup() was called
if (1) *or* (2) is true, wait_closed() just returns without waiting on anything.
However, when Server.close() is called there might be still active transports serving requests. Server.wait_closed() should wait until all of them are detached, even if Server._sockets is already reset.
So the below implementation:
async def wait_closed(self):
if self._sockets is None or self._waiters is None:
return
waiter = self._loop.create_future()
self._waiters.append(waiter)
await waiter
should be changed to:
async def wait_closed(self):
if self._waiters is None:
assert self._active_count == 0
return
waiter = self._loop.create_future()
self._waiters.append(waiter)
await waiter |
|
Date |
User |
Action |
Args |
2018-06-01 05:11:49 | yselivanov | set | recipients:
+ yselivanov, asvetlov |
2018-06-01 05:11:49 | yselivanov | set | messageid: <1527829909.37.0.682650639539.issue33727@psf.upfronthosting.co.za> |
2018-06-01 05:11:49 | yselivanov | link | issue33727 messages |
2018-06-01 05:11:49 | yselivanov | create | |
|