diff options
| author | mike bayer <mike_mp@zzzcomputing.com> | 2019-05-17 17:06:02 +0000 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@bbpush.zzzcomputing.com> | 2019-05-17 17:06:02 +0000 |
| commit | 000c0281d92432ada3e8fceff56a8406a5a093b1 (patch) | |
| tree | 6d2c2750197c82d18e06413670c4dddf5616c5ba /lib/sqlalchemy | |
| parent | ef618f041998c2bb463a3476a51b45b74715a5eb (diff) | |
| parent | 5039c6f01d0bd1f58f950e80cddf7472444a70a4 (diff) | |
| download | sqlalchemy-000c0281d92432ada3e8fceff56a8406a5a093b1.tar.gz | |
Merge "Mutex the declarative scan/map process against configure_mappers()"
Diffstat (limited to 'lib/sqlalchemy')
| -rw-r--r-- | lib/sqlalchemy/ext/declarative/base.py | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/lib/sqlalchemy/ext/declarative/base.py b/lib/sqlalchemy/ext/declarative/base.py index 62db282d1..622a83736 100644 --- a/lib/sqlalchemy/ext/declarative/base.py +++ b/lib/sqlalchemy/ext/declarative/base.py @@ -17,6 +17,7 @@ from ... import util from ...orm import class_mapper from ...orm import exc as orm_exc from ...orm import mapper +from ...orm import mapperlib from ...orm import synonym from ...orm.attributes import QueryableAttribute from ...orm.base import _is_mapped_class @@ -155,6 +156,7 @@ class _MapperConfig(object): cfg_cls = _DeferredMapperConfig else: cfg_cls = _MapperConfig + cfg_cls(cls_, classname, dict_) def __init__(self, cls_, classname, dict_): @@ -177,17 +179,21 @@ class _MapperConfig(object): self._scan_attributes() - clsregistry.add_class(self.classname, self.cls) + mapperlib._CONFIGURE_MUTEX.acquire() + try: + clsregistry.add_class(self.classname, self.cls) - self._extract_mappable_attributes() + self._extract_mappable_attributes() - self._extract_declared_columns() + self._extract_declared_columns() - self._setup_table() + self._setup_table() - self._setup_inheritance() + self._setup_inheritance() - self._early_mapping() + self._early_mapping() + finally: + mapperlib._CONFIGURE_MUTEX.release() def _early_mapping(self): self.map() |
