Merge pull request #12156 from mabashian/large-workflow-crash

Don't repeatedly traverse workflow nodes when finding ancestors
This commit is contained in:
JST
2022-05-10 14:41:49 -03:00
committed by GitHub

View File

@@ -548,17 +548,21 @@ function selectSourceForLinking(state, sourceNode) {
invalidLinkTargetIds.push(link.target.id); invalidLinkTargetIds.push(link.target.id);
} }
if (!parentMap[link.target.id]) { if (!parentMap[link.target.id]) {
parentMap[link.target.id] = []; parentMap[link.target.id] = {
parents: [],
traversed: false,
};
} }
parentMap[link.target.id].push(link.source.id); parentMap[link.target.id].parents.push(link.source.id);
}); });
const getAncestors = (id) => { const getAncestors = (id) => {
if (parentMap[id]) { if (parentMap[id] && !parentMap[id].traversed) {
parentMap[id].forEach((parentId) => { parentMap[id].parents.forEach((parentId) => {
invalidLinkTargetIds.push(parentId); invalidLinkTargetIds.push(parentId);
getAncestors(parentId); getAncestors(parentId);
}); });
parentMap[id].traversed = true;
} }
}; };