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
commit e87c121f8f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -548,17 +548,21 @@ function selectSourceForLinking(state, sourceNode) {
invalidLinkTargetIds.push(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) => {
if (parentMap[id]) {
parentMap[id].forEach((parentId) => {
if (parentMap[id] && !parentMap[id].traversed) {
parentMap[id].parents.forEach((parentId) => {
invalidLinkTargetIds.push(parentId);
getAncestors(parentId);
});
parentMap[id].traversed = true;
}
};