mirror of
https://github.com/ansible/awx.git
synced 2026-02-15 10:10:01 -03:30
Merge pull request #12156 from mabashian/large-workflow-crash
Don't repeatedly traverse workflow nodes when finding ancestors
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user