diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-03-16 18:15:27 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-03-16 18:15:27 -0400 |
| commit | 852a1aef0763b5cd5ffb196ec1d18dcfee6bbfd9 (patch) | |
| tree | 7b751e82e01ef3fbf077d872c5c474cf37cf3e22 | |
| parent | 798339430a7657023188364c3ead0bcce56abd6b (diff) | |
| download | sqlalchemy-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-- | CHANGES | 3 | ||||
| -rw-r--r-- | lib/sqlalchemy/pool.py | 7 | ||||
| -rw-r--r-- | test/engine/test_pool.py | 20 |
3 files changed, 22 insertions, 8 deletions
@@ -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() |
