- Fix
read_timeoutlosing data, EOF, or error notifications when the transport callback
runs before the read waiter is registered, notably on Python 3.9/3.10 (#155). - Close the in-flight connection when
Pool.wait_closed()is cancelled, and serialize
concurrent drainers so shutdown cannot report completion before connections close (#156). - Raise DBAPI
OperationalErrorfor writes to closed transports (including uvloop) so
SQLAlchemy'spool_pre_pingcan recognize the disconnect and replace the connection (#158). - Fix
Pool.wait_closed()blocking forever when the last connection was released while inside a
transaction or after disconnecting, and notify pool waiters when a pool-fillingconnect()
raises (#154). - Fix
Pool.terminate()not notifyingwait_closed()waiters parked on the pool's condition, so
await_closed()call already in flight whenterminate()runs would hang forever even though
the pool was fully drained (#157).
Full changelog: v0.2.14...v0.2.15