aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar jesopo2019-05-27 11:42:47 +0100
committerGravatar jesopo2019-05-27 11:42:47 +0100
commitce3a0668c65a9bf948bec28d5d842f7d2525187f (patch)
treea291ac55b0165df380f2751e62ac6bfa661815d9
parentEnable TCP keepalives (diff)
signature
Throw an exception when we detect a complex circular dependency
-rw-r--r--src/ModuleManager.py5
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]