From: Mike Bayer Date: Wed, 13 Dec 2006 20:45:34 +0000 (+0000) Subject: - fixed QueuePool bug whereby its better able to reconnect to a database X-Git-Tag: rel_0_3_3~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8061aaaed94924067122dc7568e8cb0e55eda329;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - fixed QueuePool bug whereby its better able to reconnect to a database that was not reachable, also fixed dispose() method --- diff --git a/CHANGES b/CHANGES index 48100428e8..fd03d1a93d 100644 --- a/CHANGES +++ b/CHANGES @@ -2,7 +2,10 @@ - fixes to passive_deletes flag, lazy=None (noload) flag - added example/docs for dealing with large collections - added object_session() method to sqlalchemy namespace - +- fixed QueuePool bug whereby its better able to reconnect to a database +that was not reachable (thanks to Sébastien Lelong), also fixed dispose() +method + 0.3.2 - major connection pool bug fixed. fixes MySQL out of sync errors, will also prevent transactions getting rolled back diff --git a/lib/sqlalchemy/pool.py b/lib/sqlalchemy/pool.py index d13c83cac7..08fe45f8ce 100644 --- a/lib/sqlalchemy/pool.py +++ b/lib/sqlalchemy/pool.py @@ -363,8 +363,9 @@ class QueuePool(Pool): except Queue.Empty: if self._max_overflow > -1 and self._overflow >= self._max_overflow: raise exceptions.TimeoutError("QueuePool limit of size %d overflow %d reached, connection timed out" % (self.size(), self.overflow())) + con = self.create_connection() self._overflow += 1 - return self.create_connection() + return con def dispose(self): while True: @@ -373,6 +374,9 @@ class QueuePool(Pool): conn.close() except Queue.Empty: break + + self._overflow = 0 - self.size() + self.log("Pool disposed. " + self.status()) def status(self): tup = (self.size(), self.checkedin(), self.overflow(), self.checkedout())