summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
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
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')
-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: