Author: phd
Date: 2007-07-17 08:13:01 -0600 (Tue, 17 Jul 2007)
New Revision: 2761
Modified:
SQLObject/trunk/sqlobject/declarative.py
Log:
A patch by Bernhard <ber...@zk...>:
Prevent a deadlock in declarative.threadSafeMethod() by not reacquiring the class lock.
Modified: SQLObject/trunk/sqlobject/declarative.py
===================================================================
--- SQLObject/trunk/sqlobject/declarative.py 2007-07-17 14:12:46 UTC (rev 2760)
+++ SQLObject/trunk/sqlobject/declarative.py 2007-07-17 14:13:01 UTC (rev 2761)
@@ -89,6 +89,10 @@
def threadSafeMethod(lock):
def decorator(fn):
def _wrapper(self, *args, **kwargs):
+ # This prevents deadlocks.
+ # The class lock isn't really needed in __init__() while fetching.
+ if '_SO_fetch_no_create' in kwargs:
+ return fn(self, *args, **kwargs)
lock.acquire()
try:
return fn(self, *args, **kwargs)
|