fix(runnable_vertices_manager.py): add recursive function to find predecessors (#2593)
fix(runnable_vertices_manager.py): add recursive function to find runnable predecessors
This commit is contained in:
parent
311b66361e
commit
4c43b4cc82
1 changed files with 12 additions and 3 deletions
|
|
@ -60,11 +60,20 @@ class RunnableVerticesManager:
|
||||||
runnable_vertices = []
|
runnable_vertices = []
|
||||||
visited = set()
|
visited = set()
|
||||||
|
|
||||||
|
def find_runnable_predecessors(predecessor_id: str):
|
||||||
|
if predecessor_id in visited:
|
||||||
|
return
|
||||||
|
visited.add(predecessor_id)
|
||||||
|
if self.is_vertex_runnable(predecessor_id, inactivated_vertices):
|
||||||
|
runnable_vertices.append(predecessor_id)
|
||||||
|
else:
|
||||||
|
for pred_pred_id in self.run_predecessors.get(predecessor_id, []):
|
||||||
|
find_runnable_predecessors(pred_pred_id)
|
||||||
|
|
||||||
for successor_id in self.run_map.get(vertex_id, []):
|
for successor_id in self.run_map.get(vertex_id, []):
|
||||||
for predecessor_id in self.run_predecessors.get(successor_id, []):
|
for predecessor_id in self.run_predecessors.get(successor_id, []):
|
||||||
if predecessor_id not in visited and self.is_vertex_runnable(predecessor_id, inactivated_vertices):
|
find_runnable_predecessors(predecessor_id)
|
||||||
runnable_vertices.append(predecessor_id)
|
|
||||||
visited.add(predecessor_id)
|
|
||||||
return runnable_vertices
|
return runnable_vertices
|
||||||
|
|
||||||
def remove_from_predecessors(self, vertex_id: str):
|
def remove_from_predecessors(self, vertex_id: str):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue