diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-08-02 00:02:16 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-08-02 00:02:16 +0000 |
| commit | 23140c926be37eba0c0e3eecfb885b54ca2e41c5 (patch) | |
| tree | 55fca838bb87a5276195f07ef35c6bfb4e514b1d /lib/sqlalchemy/pool.py | |
| parent | f75faa7cb489a343a2f26afd32c42a378591d6ad (diff) | |
| download | sqlalchemy-23140c926be37eba0c0e3eecfb885b54ca2e41c5.tar.gz | |
-merged 0.3 pool threadlocal fix from r3139
Diffstat (limited to 'lib/sqlalchemy/pool.py')
| -rw-r--r-- | lib/sqlalchemy/pool.py | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/lib/sqlalchemy/pool.py b/lib/sqlalchemy/pool.py index 716634653..f6965495f 100644 --- a/lib/sqlalchemy/pool.py +++ b/lib/sqlalchemy/pool.py @@ -159,13 +159,15 @@ class Pool(object): return _ConnectionFairy(self).checkout() try: - return self._threadconns[thread.get_ident()].connfairy().checkout() + return self._threadconns[thread.get_ident()].checkout() except KeyError: - agent = _ConnectionFairy(self).checkout() - self._threadconns[thread.get_ident()] = agent._threadfairy - return agent + agent = _ConnectionFairy(self) + self._threadconns[thread.get_ident()] = agent + return agent.checkout() def return_conn(self, agent): + if self._use_threadlocal and thread.get_ident() in self._threadconns: + del self._threadconns[thread.get_ident()] self.do_return_conn(agent._connection_record) def get(self): @@ -250,17 +252,10 @@ class _ConnectionRecord(object): self.__pool.log("Error on connect(): %s" % (str(e))) raise -class _ThreadFairy(object): - """Mark a thread identifier as owning a connection, for a thread local pool.""" - - def __init__(self, connfairy): - self.connfairy = weakref.ref(connfairy) - class _ConnectionFairy(object): """Proxy a DBAPI connection object and provides return-on-dereference support.""" def __init__(self, pool): - self._threadfairy = _ThreadFairy(self) self._pool = pool self.__counter = 0 try: @@ -385,7 +380,6 @@ class _ConnectionFairy(object): self._pool.return_conn(self) self.connection = None self._connection_record = None - self._threadfairy = None class _CursorFairy(object): def __init__(self, parent, cursor): |
