fix: handle potential null node in DQ failure lineage (#18707)

This commit is contained in:
Teddy 2024-11-20 14:12:08 +01:00 committed by GitHub
parent de4a2cdfa0
commit 0dca5362b9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 24 additions and 6 deletions

View File

@ -1172,9 +1172,11 @@ public class ElasticSearchClient implements SearchClient {
processedNodes.add(nodeFailureId);
if (nodesWithFailures.contains(nodeFailureId)) {
Map<String, Object> node = allNodes.get(nodeFailureId);
node.keySet().removeAll(FIELDS_TO_REMOVE);
node.remove("lineage");
nodes.add(allNodes.get(nodeFailureId));
if (node != null) {
node.keySet().removeAll(FIELDS_TO_REMOVE);
node.remove("lineage");
nodes.add(node);
}
}
List<Map<String, Object>> edgesForNode = allEdges.get(nodeFailureId);
if (edgesForNode != null) {

View File

@ -1097,7 +1097,8 @@ public class OpenSearchClient implements SearchClient {
nodesWithFailures,
new HashSet<>());
for (String nodeWithFailure : nodesWithFailures) {
traceBackDQLineage(nodeWithFailure, allEdges, allNodes, nodes, edges, new HashSet<>());
traceBackDQLineage(
nodeWithFailure, nodesWithFailures, allEdges, allNodes, nodes, edges, new HashSet<>());
}
}
@ -1154,6 +1155,7 @@ public class OpenSearchClient implements SearchClient {
private void traceBackDQLineage(
String nodeFailureId,
Set<String> nodesWithFailures,
Map<String, List<Map<String, Object>>> allEdges,
Map<String, Map<String, Object>> allNodes,
Set<Map<String, Object>> nodes,
@ -1164,7 +1166,14 @@ public class OpenSearchClient implements SearchClient {
}
processedNodes.add(nodeFailureId);
nodes.add(allNodes.get(nodeFailureId));
if (nodesWithFailures.contains(nodeFailureId)) {
Map<String, Object> node = allNodes.get(nodeFailureId);
if (node != null) {
node.keySet().removeAll(FIELDS_TO_REMOVE);
node.remove("lineage");
nodes.add(node);
}
}
List<Map<String, Object>> edgesForNode = allEdges.get(nodeFailureId);
if (edgesForNode != null) {
for (Map<String, Object> edge : edgesForNode) {
@ -1173,7 +1182,14 @@ public class OpenSearchClient implements SearchClient {
if (!fromEntityId.equals(nodeFailureId)) continue; // skip if the edge is from the node
Map<String, String> toEntity = (Map<String, String>) edge.get("toEntity");
edges.add(edge);
traceBackDQLineage(toEntity.get("id"), allEdges, allNodes, nodes, edges, processedNodes);
traceBackDQLineage(
toEntity.get("id"),
nodesWithFailures,
allEdges,
allNodes,
nodes,
edges,
processedNodes);
}
}
}