diff options
| author | mike bayer <mike_mp@zzzcomputing.com> | 2021-07-16 15:17:23 +0000 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@ci3.zzzcomputing.com> | 2021-07-16 15:17:23 +0000 |
| commit | 42d747f72efd776a575ea776ebb5c768282f44eb (patch) | |
| tree | 783b553e9dee1a1e836bde107a2baa32a68d8831 | |
| parent | b932b04b65f0851cbd63e89ee6067fd0a8d30a1b (diff) | |
| parent | f3c4735c0bef6325e977876e12fc476da363ec3c (diff) | |
| download | sqlalchemy-42d747f72efd776a575ea776ebb5c768282f44eb.tar.gz | |
Merge "apply list() around weakkeydictionary iteration"
| -rw-r--r-- | doc/build/changelog/unreleased_14/6771.rst | 8 | ||||
| -rw-r--r-- | lib/sqlalchemy/orm/decl_api.py | 4 |
2 files changed, 10 insertions, 2 deletions
diff --git a/doc/build/changelog/unreleased_14/6771.rst b/doc/build/changelog/unreleased_14/6771.rst new file mode 100644 index 000000000..811ee7d82 --- /dev/null +++ b/doc/build/changelog/unreleased_14/6771.rst @@ -0,0 +1,8 @@ +.. change:: + :tags: orm, bug + :tickets: 6771 + + Fixed an issue where clearing of mappers during things like test suite + teardowns could cause a "dictionary changed size" warning during garbage + collection, due to iteration of a weak-referencing dictionary. A ``list()`` + has been applied to prevent concurrent GC from affecting this operation. diff --git a/lib/sqlalchemy/orm/decl_api.py b/lib/sqlalchemy/orm/decl_api.py index 54e927ee4..23b89a543 100644 --- a/lib/sqlalchemy/orm/decl_api.py +++ b/lib/sqlalchemy/orm/decl_api.py @@ -624,14 +624,14 @@ class registry(object): return itertools.chain( ( manager.mapper - for manager in self._managers + for manager in list(self._managers) if manager.is_mapped and not manager.mapper.configured and manager.mapper._ready_for_configure ), ( npm - for npm in self._non_primary_mappers + for npm in list(self._non_primary_mappers) if not npm.configured and npm._ready_for_configure ), ) |
