From acd13f99f18ad02b2e51e8be7303124e40c55473 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Sun, 6 Jan 2008 20:41:48 +0000 Subject: [PATCH] - suppressing *all* errors in InstanceState.__cleanup() now. --- CHANGES | 2 ++ lib/sqlalchemy/orm/attributes.py | 12 +++--------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/CHANGES b/CHANGES index 20a39f51e1..c9922fc34a 100644 --- a/CHANGES +++ b/CHANGES @@ -12,6 +12,8 @@ CHANGES for SQL expression purposes is still fine) [ticket:912] - orm + - suppressing *all* errors in InstanceState.__cleanup() now. + - Fixed cascades on a += assignment to a list-based relation. - synonyms can now be created against props that don't exist yet, diff --git a/lib/sqlalchemy/orm/attributes.py b/lib/sqlalchemy/orm/attributes.py index 1639055bd4..a95ae05002 100644 --- a/lib/sqlalchemy/orm/attributes.py +++ b/lib/sqlalchemy/orm/attributes.py @@ -687,7 +687,7 @@ class InstanceState(object): return instance_dict = instance_dict() - if instance_dict is None: + if instance_dict is None or instance_dict._mutex is None: return # the mutexing here is based on the assumption that gc.collect() @@ -695,17 +695,11 @@ class InstanceState(object): # which is normally operating upon the instance dict. instance_dict._mutex.acquire() try: - # if instance_dict de-refed us, or it called our - # _resurrect, return. again setting local copy - # to avoid the rug being pulled in between - id2 = self.instance_dict - if id2 is None or id2() is None or self.obj() is not None: - return - try: self.__resurrect(instance_dict) except: - # catch GC exceptions + # catch app cleanup exceptions. no other way around this + # without warnings being produced pass finally: instance_dict._mutex.release() -- 2.47.3