Skip to content

Commit a8c9fb5

Browse files
committed
Fix: Get rid of recursion when calculating skipped nodes
1 parent 909548b commit a8c9fb5

1 file changed

Lines changed: 14 additions & 7 deletions

File tree

sqlmesh/utils/concurrency.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -105,16 +105,23 @@ def _skip_next_nodes(self, parent: H) -> None:
105105
self._finished_future.set_result(None)
106106
return
107107

108-
skipped_nodes = [node for node, deps in self._unprocessed_nodes.items() if parent in deps]
108+
skipped_nodes = {node for node, deps in self._unprocessed_nodes.items() if parent in deps}
109109

110-
self._skipped_nodes.extend(skipped_nodes)
110+
while skipped_nodes:
111+
self._skipped_nodes.extend(skipped_nodes)
111112

112-
for skipped_node in skipped_nodes:
113-
self._unprocessed_nodes_num -= 1
114-
self._unprocessed_nodes.pop(skipped_node)
113+
for skipped_node in skipped_nodes:
114+
self._unprocessed_nodes_num -= 1
115+
self._unprocessed_nodes.pop(skipped_node)
116+
117+
skipped_nodes = {
118+
node
119+
for node, deps in self._unprocessed_nodes.items()
120+
if skipped_nodes.intersection(deps)
121+
}
115122

116-
for skipped_node in skipped_nodes:
117-
self._skip_next_nodes(skipped_node)
123+
if not self._unprocessed_nodes_num:
124+
self._finished_future.set_result(None)
118125

119126
def _init_state(self) -> None:
120127
self._unprocessed_nodes = self.dag.graph

0 commit comments

Comments
 (0)