]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
fix gc related race in weakdict popitem
authorMike Bayer <mike_mp@zzzcomputing.com>
Wed, 3 Feb 2021 21:56:58 +0000 (16:56 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Wed, 3 Feb 2021 21:56:58 +0000 (16:56 -0500)
Change-Id: I88c19b6d3c97a714f7e4bf22812a23e095f9dcba

lib/sqlalchemy/orm/mapper.py

index 16a2c641602a371956b88262ee971b46a3ca4c2b..fe425301a0f56a0fac5cf84b6a2e186edbce9315 100644 (file)
@@ -3450,8 +3450,13 @@ def _dispose_registries(registries, cascade):
             )
 
         while reg._managers:
-            manager, _ = reg._managers.popitem()
-            reg._dispose_manager_and_mapper(manager)
+            try:
+                manager, _ = reg._managers.popitem()
+            except KeyError:
+                # guard against race between while and popitem
+                pass
+            else:
+                reg._dispose_manager_and_mapper(manager)
 
         reg._non_primary_mappers.clear()
         reg._dependents.clear()