diff options
| author | 2019-05-27 11:42:47 +0100 | |
|---|---|---|
| committer | 2019-05-27 11:42:47 +0100 | |
| commit | ce3a0668c65a9bf948bec28d5d842f7d2525187f (patch) | |
| tree | a291ac55b0165df380f2751e62ac6bfa661815d9 /src | |
| parent | Enable TCP keepalives (diff) | |
| signature | ||
Throw an exception when we detect a complex circular dependency
Diffstat (limited to 'src')
| -rw-r--r-- | src/ModuleManager.py | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/ModuleManager.py b/src/ModuleManager.py index bbe7ab30..ef452ff8 100644 --- a/src/ModuleManager.py +++ b/src/ModuleManager.py @@ -24,6 +24,8 @@ class ModuleDependencyNotFulfilled(ModuleException): % (module, dependency)) self.module = module self.dependency = dependency +class ModuleCircularDependency(ModuleException): + pass class ModuleType(enum.Enum): FILE = 0 @@ -266,9 +268,12 @@ class ModuleManager(object): self.log.warn( "Circular dependencies detected: %s<->%s", [name, dep_name]) + changed = True # snap a circular dependence deps.remove(dep_name) definition_dependencies[dep_name].remove(name) + if not changed: + raise ModuleCircularDependency() return [definition_names[name] for name in definitions_ordered] |
