[core] TaskManager: fix compute after submit

After a renderfarm submit, it was not possible to compute the same node
locally anymore.
This commit is contained in:
Fabien Castan 2021-02-25 18:35:54 +01:00
parent 54311569d1
commit 51572c8f59

View file

@ -173,13 +173,7 @@ class TaskManager(BaseObject):
"""
self._graph = graph
if self._thread._state != State.RUNNING:
self._nodes.clear()
externEmpty = any(node.isAlreadySubmitted() for node in self._nodesExtern)
if not externEmpty:
self._nodes.update(self._nodesExtern)
else:
self._nodesExtern = []
self.updateNodes()
if forceCompute:
nodes, edges = graph.dfsOnFinish(startNodes=toNodes)
@ -284,6 +278,16 @@ class TaskManager(BaseObject):
self._nodesExtern = []
self._nodesToProcess = []
def updateNodes(self):
"""
Update task manager nodes lists by checking the nodes status.
"""
self._nodesExtern = [node for node in self._nodesExtern if node.isExtern() and node.isAlreadySubmitted()]
newNodes = [node for node in self._nodes if node.isAlreadySubmitted()]
if len(newNodes) != len(self._nodes):
self._nodes.clear()
self._nodes.update(newNodes)
def update(self, graph):
"""
Add all the nodes that are being rendered in a renderfarm to the taskmanager when new graph is loaded
@ -390,19 +394,7 @@ class TaskManager(BaseObject):
))
# Update task manager's lists
if self._thread._state != State.RUNNING:
self._nodes.clear()
externEmpty = True
for node in self._nodesExtern:
if node.isAlreadySubmitted():
externEmpty = False
break
if not externEmpty:
self._nodes.update(self._nodesExtern)
else:
self._nodesExtern = []
self.updateNodes()
# Check dependencies of toNodes
if not toNodes: