summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Schubert <ben.c.schubert@gmail.com>2019-02-06 13:56:53 +0000
committerBenjamin Schubert <ben.c.schubert@gmail.com>2019-02-06 13:56:53 +0000
commit00efed287f2973c3c2f1e14bd9eeb2b7d11d9065 (patch)
tree8c8865d0568704295f4b29ac14b2f72c20725c34
parent0e47114402511680420156c066f6861d1b30a7f4 (diff)
downloadbuildstream-bschubert/wipe-internal-state.tar.gz
Clean internal state after we loaded elementsbschubert/wipe-internal-state
Once the elements are loaded, we don't need to keep the internal loading state and can remove it. This will allow the garbage collector to be able to do its job and remove the unused data.
-rw-r--r--buildstream/_loader/loader.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/buildstream/_loader/loader.py b/buildstream/_loader/loader.py
index fc946d50b..3b9b768b5 100644
--- a/buildstream/_loader/loader.py
+++ b/buildstream/_loader/loader.py
@@ -278,6 +278,8 @@ class Loader():
deps_names = [dep.name for dep in dependencies]
self._warn_invalid_elements(deps_names)
+ self._reset_internal_space()
+
return element
# _check_circular_deps():
@@ -600,6 +602,13 @@ class Loader():
fetch_subprojects=fetch_subprojects)
return junction_path[-2], junction_path[-1], loader
+ def _reset_internal_space(self):
+ for loader in self._loaders:
+ loader._reset_internal_space()
+
+ self._meta_elements = {}
+ self._elements = {}
+
# Print a warning message, checks warning_token against project configuration
#
# Args: