diff options
author | Steve Baker <sbaker@redhat.com> | 2016-05-16 12:59:59 +1200 |
---|---|---|
committer | Steve Baker <sbaker@redhat.com> | 2016-05-25 12:56:47 +1200 |
commit | c62e1b325a536294b3285f8cbcad7d66a415ee23 (patch) | |
tree | 46659636b9d68f1679cc55f6a46cb0ce666ff51e /heat/objects/base.py | |
parent | 0ef5d601c02da766d3d00712bd70b4912c66bcad (diff) | |
download | heat-c62e1b325a536294b3285f8cbcad7d66a415ee23.tar.gz |
Use a weakref for the data object context
There are no known circular reference issues caused by storing the
context in data objects, but the following changes will refer to data
objects in the context, so this change prevents any later issues.
Change-Id: I3680e5678003cf339a98fbb7a2b1b387fb2243c0
Related-Bug: #1578854
Diffstat (limited to 'heat/objects/base.py')
-rw-r--r-- | heat/objects/base.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/heat/objects/base.py b/heat/objects/base.py index 6ff8deda5..816deb6e0 100644 --- a/heat/objects/base.py +++ b/heat/objects/base.py @@ -14,9 +14,26 @@ """Heat common internal object model""" +import weakref + from oslo_versionedobjects import base as ovoo_base class HeatObject(ovoo_base.VersionedObject): OBJ_PROJECT_NAMESPACE = 'heat' VERSION = '1.0' + + @property + def _context(self): + if self._contextref is None: + return + ctxt = self._contextref() + assert ctxt is not None, "Need a reference to the context" + return ctxt + + @_context.setter + def _context(self, context): + if context: + self._contextref = weakref.ref(context) + else: + self._contextref = None |