Commits

Mike Bayer committed 2db2f9f

- suppressing *all* errors in InstanceState.__cleanup() now.

Comments (0)

Files changed (2)

       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,

lib/sqlalchemy/orm/attributes.py

             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()
         # 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()
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.