diff --git a/lib/config.py b/lib/config.py index af45aa371997fae665aa28ab6012b13d11b245bb..712f599b51ffac36ba8af019ed3f8f74f3d6d9c0 100644 --- a/lib/config.py +++ b/lib/config.py @@ -206,6 +206,13 @@ class ConfigWriter: self._temporary_ids.add(unique_id) return unique_id + def _CleanupTemporaryIDs(self): + """Cleanups the _temporary_ids structure. + + """ + existing = self._AllIDs(include_temporary=False) + self._temporary_ids = self._temporary_ids - existing + def _AllMACs(self): """Return all MACs present in the config. @@ -1114,6 +1121,10 @@ class ConfigWriter: """Write the configuration data to persistent storage. """ + # first, cleanup the _temporary_ids set, if an ID is now in the + # other objects it should be discarded to prevent unbounded growth + # of that structure + self._CleanupTemporaryIDs() config_errors = self._UnlockedVerifyConfig() if config_errors: raise errors.ConfigurationError("Configuration data is not"