summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2011-03-16 18:15:27 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2011-03-16 18:15:27 -0400
commit852a1aef0763b5cd5ffb196ec1d18dcfee6bbfd9 (patch)
tree7b751e82e01ef3fbf077d872c5c474cf37cf3e22
parent798339430a7657023188364c3ead0bcce56abd6b (diff)
downloadsqlalchemy-852a1aef0763b5cd5ffb196ec1d18dcfee6bbfd9.tar.gz
- Fixed AssertionPool regression bug. A replacement of finalize
logic did the wrong thing, but then also the logic it replaced also doesn't seem like its needed. If it is, would rather have a test case first so its out for now, added tests for assertionpool. [ticket:2097]
-rw-r--r--CHANGES3
-rw-r--r--lib/sqlalchemy/pool.py7
-rw-r--r--test/engine/test_pool.py20
3 files changed, 22 insertions, 8 deletions
diff --git a/CHANGES b/CHANGES
index 9eedcae30..660c4a860 100644
--- a/CHANGES
+++ b/CHANGES
@@ -78,6 +78,9 @@ CHANGES
(<eventname>, <fn>), which are applied to the Table
before the reflection process begins.
+- engine
+ - Fixed AssertionPool regression bug. [ticket:2097]
+
- dialect
- Changed exception raised to ArgumentError when an
invalid dialect is specified. [ticket:2060]
diff --git a/lib/sqlalchemy/pool.py b/lib/sqlalchemy/pool.py
index 327e4aa1f..a45c2e80b 100644
--- a/lib/sqlalchemy/pool.py
+++ b/lib/sqlalchemy/pool.py
@@ -60,8 +60,6 @@ def clear_managers():
class Pool(log.Identified):
"""Abstract base class for connection pools."""
- _no_finalize = False
-
def __init__(self,
creator, recycle=-1, echo=None,
use_threadlocal=False,
@@ -324,9 +322,6 @@ class _ConnectionRecord(object):
def _finalize_fairy(connection, connection_record, pool, ref, echo):
_refs.discard(connection_record)
- if pool._no_finalize:
- return
-
if ref is not None and \
connection_record.fairy is not ref:
return
@@ -826,8 +821,6 @@ class AssertionPool(Pool):
than desired.
"""
- _no_finalize = True
-
def __init__(self, *args, **kw):
self._conn = None
self._checked_out = False
diff --git a/test/engine/test_pool.py b/test/engine/test_pool.py
index 4e818894f..2df8b9ca2 100644
--- a/test/engine/test_pool.py
+++ b/test/engine/test_pool.py
@@ -3,7 +3,7 @@ from sqlalchemy import pool, interfaces, create_engine, select, event
import sqlalchemy as tsa
from test.lib import TestBase, testing
from test.lib.util import gc_collect, lazy_gc
-from test.lib.testing import eq_
+from test.lib.testing import eq_, assert_raises
mcid = 1
class MockDBAPI(object):
@@ -940,6 +940,24 @@ class SingletonThreadPoolTest(PoolTestBase):
th.join()
assert len(p._all_conns) == 3
+class AssertionPoolTest(PoolTestBase):
+ def test_connect_error(self):
+ dbapi = MockDBAPI()
+ p = pool.AssertionPool(creator = lambda: dbapi.connect('foo.db'))
+ c1 = p.connect()
+ assert_raises(AssertionError, p.connect)
+
+ def test_connect_multiple(self):
+ dbapi = MockDBAPI()
+ p = pool.AssertionPool(creator = lambda: dbapi.connect('foo.db'))
+ c1 = p.connect()
+ c1.close()
+ c2 = p.connect()
+ c2.close()
+
+ c3 = p.connect()
+ assert_raises(AssertionError, p.connect)
+
class NullPoolTest(PoolTestBase):
def test_reconnect(self):
dbapi = MockDBAPI()