Fix db_pool .clear() when min_size > 0
This commit is contained in:
@@ -228,7 +228,9 @@ class BaseConnectionPool(Pool):
|
|||||||
if self._expiration_timer:
|
if self._expiration_timer:
|
||||||
self._expiration_timer.cancel()
|
self._expiration_timer.cancel()
|
||||||
free_items, self.free_items = self.free_items, deque()
|
free_items, self.free_items = self.free_items, deque()
|
||||||
for _last_used, _created_at, conn in free_items:
|
for item in free_items:
|
||||||
|
# Free items created using min_size>0 are not tuples.
|
||||||
|
conn = item[2] if isinstance(item, tuple) else item
|
||||||
self._safe_close(conn, quiet=True)
|
self._safe_close(conn, quiet=True)
|
||||||
|
|
||||||
def __del__(self):
|
def __del__(self):
|
||||||
|
@@ -247,6 +247,12 @@ class DBConnectionPool(DBTester):
|
|||||||
self.pool.clear()
|
self.pool.clear()
|
||||||
self.assertEqual(len(self.pool.free_items), 0)
|
self.assertEqual(len(self.pool.free_items), 0)
|
||||||
|
|
||||||
|
def test_clear_warmup(self):
|
||||||
|
"""Clear implicitly created connections (min_size > 0)"""
|
||||||
|
self.pool = self.create_pool(min_size=1)
|
||||||
|
self.pool.clear()
|
||||||
|
self.assertEqual(len(self.pool.free_items), 0)
|
||||||
|
|
||||||
def test_unwrap_connection(self):
|
def test_unwrap_connection(self):
|
||||||
self.assert_(isinstance(self.connection,
|
self.assert_(isinstance(self.connection,
|
||||||
db_pool.GenericConnectionWrapper))
|
db_pool.GenericConnectionWrapper))
|
||||||
@@ -438,12 +444,12 @@ class RaisingDBModule(object):
|
|||||||
|
|
||||||
class TpoolConnectionPool(DBConnectionPool):
|
class TpoolConnectionPool(DBConnectionPool):
|
||||||
__test__ = False # so that nose doesn't try to execute this directly
|
__test__ = False # so that nose doesn't try to execute this directly
|
||||||
def create_pool(self, max_size=1, max_idle=10, max_age=10,
|
def create_pool(self, min_size=0, max_size=1, max_idle=10, max_age=10,
|
||||||
connect_timeout=0.5, module=None):
|
connect_timeout=0.5, module=None):
|
||||||
if module is None:
|
if module is None:
|
||||||
module = self._dbmodule
|
module = self._dbmodule
|
||||||
return db_pool.TpooledConnectionPool(module,
|
return db_pool.TpooledConnectionPool(module,
|
||||||
min_size=0, max_size=max_size,
|
min_size=min_size, max_size=max_size,
|
||||||
max_idle=max_idle, max_age=max_age,
|
max_idle=max_idle, max_age=max_age,
|
||||||
connect_timeout = connect_timeout,
|
connect_timeout = connect_timeout,
|
||||||
**self._auth)
|
**self._auth)
|
||||||
@@ -462,12 +468,12 @@ class TpoolConnectionPool(DBConnectionPool):
|
|||||||
|
|
||||||
class RawConnectionPool(DBConnectionPool):
|
class RawConnectionPool(DBConnectionPool):
|
||||||
__test__ = False # so that nose doesn't try to execute this directly
|
__test__ = False # so that nose doesn't try to execute this directly
|
||||||
def create_pool(self, max_size=1, max_idle=10, max_age=10,
|
def create_pool(self, min_size=0, max_size=1, max_idle=10, max_age=10,
|
||||||
connect_timeout=0.5, module=None):
|
connect_timeout=0.5, module=None):
|
||||||
if module is None:
|
if module is None:
|
||||||
module = self._dbmodule
|
module = self._dbmodule
|
||||||
return db_pool.RawConnectionPool(module,
|
return db_pool.RawConnectionPool(module,
|
||||||
min_size=0, max_size=max_size,
|
min_size=min_size, max_size=max_size,
|
||||||
max_idle=max_idle, max_age=max_age,
|
max_idle=max_idle, max_age=max_age,
|
||||||
connect_timeout=connect_timeout,
|
connect_timeout=connect_timeout,
|
||||||
**self._auth)
|
**self._auth)
|
||||||
|
Reference in New Issue
Block a user