- changed status to resolved
discarded overflow connections not explicitly closed
Issue #2102
resolved
diff -r 39c465ecf3f45bbebb37c5d5ed7e1a0fccf5641c lib/sqlalchemy/pool.py
--- a/lib/sqlalchemy/pool.py Mon Mar 21 11:49:43 2011 -0400
+++ b/lib/sqlalchemy/pool.py Tue Mar 22 23:22:10 2011 -0400
@@ -655,6 +655,7 @@
try:
self._pool.put(conn, False)
except sqla_queue.Full:
+ conn.close()
if self._overflow_lock is None:
self._overflow -= 1
else:
diff -r 39c465ecf3f45bbebb37c5d5ed7e1a0fccf5641c test/engine/test_pool.py
--- a/test/engine/test_pool.py Mon Mar 21 11:49:43 2011 -0400
+++ b/test/engine/test_pool.py Tue Mar 22 23:22:10 2011 -0400
@@ -804,6 +804,24 @@
lazy_gc()
assert not pool._refs
+ def test_overflow_no_gc(self):
+ p = self._queuepool_fixture(pool_size=2,
+ max_overflow=2)
+
+ strong_refs = set()
+ def _conn():
+ c = p.connect()
+ strong_refs.add(c.connection)
+ return c
+
+ for j in xrange(5):
+ conns = [for i in xrange(4)](_conn())
+ for c in conns:
+ c.close()
+
+ still_opened = len([for c in strong_refs if not c.closed](c))
+ eq_(still_opened, 2)
+
def test_weakref_kaboom(self):
p = self._queuepool_fixture(pool_size=3,
max_overflow=-1, use_threadlocal=True)
Comments (2)
-
reporter -
reporter - removed milestone
Removing milestone: 0.6.7 (automated comment)
- Log in to comment
similar issue in
SingletonThreadPool
too.a294df9748f1314a2db7de5bc39d091854d0fec3 b81838a46d2016f3806bba1d3c0dea49ce2213c5