summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/pool.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2011-03-22 23:39:05 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2011-03-22 23:39:05 -0400
commita294df9748f1314a2db7de5bc39d091854d0fec3 (patch)
treebf6f2c9c9505a8159cf97cc8e53e7af09710f690 /lib/sqlalchemy/pool.py
parent39c465ecf3f45bbebb37c5d5ed7e1a0fccf5641c (diff)
downloadsqlalchemy-a294df9748f1314a2db7de5bc39d091854d0fec3.tar.gz
- Fixed bug in QueuePool, SingletonThreadPool whereby
connections that were discarded via overflow or periodic cleanup() were not explicitly closed, leaving garbage collection to the task instead. This generally only affects non-reference-counting backends like Jython and Pypy. Thanks to Jaimy Azle for spotting this. [ticket:2102]
Diffstat (limited to 'lib/sqlalchemy/pool.py')
-rw-r--r--lib/sqlalchemy/pool.py4
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/sqlalchemy/pool.py b/lib/sqlalchemy/pool.py
index fa9582010..a5b06f63a 100644
--- a/lib/sqlalchemy/pool.py
+++ b/lib/sqlalchemy/pool.py
@@ -536,7 +536,8 @@ class SingletonThreadPool(Pool):
def _cleanup(self):
while len(self._all_conns) > self.size:
- self._all_conns.pop()
+ c = self._all_conns.pop()
+ c.close()
def status(self):
return "SingletonThreadPool id:%d size: %d" % \
@@ -655,6 +656,7 @@ class QueuePool(Pool):
try:
self._pool.put(conn, False)
except sqla_queue.Full:
+ conn.close()
if self._overflow_lock is None:
self._overflow -= 1
else: