diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-03-22 23:39:05 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-03-22 23:39:05 -0400 |
commit | a294df9748f1314a2db7de5bc39d091854d0fec3 (patch) | |
tree | bf6f2c9c9505a8159cf97cc8e53e7af09710f690 /lib/sqlalchemy | |
parent | 39c465ecf3f45bbebb37c5d5ed7e1a0fccf5641c (diff) | |
download | sqlalchemy-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.py | 4 |
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: |