summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/pool.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2007-08-02 00:02:16 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2007-08-02 00:02:16 +0000
commit23140c926be37eba0c0e3eecfb885b54ca2e41c5 (patch)
tree55fca838bb87a5276195f07ef35c6bfb4e514b1d /lib/sqlalchemy/pool.py
parentf75faa7cb489a343a2f26afd32c42a378591d6ad (diff)
downloadsqlalchemy-23140c926be37eba0c0e3eecfb885b54ca2e41c5.tar.gz
-merged 0.3 pool threadlocal fix from r3139
Diffstat (limited to 'lib/sqlalchemy/pool.py')
-rw-r--r--lib/sqlalchemy/pool.py18
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):