mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-11-08 15:04:29 +00:00
fix: handle potential null node in DQ failure lineage (#18707)
This commit is contained in:
parent
de4a2cdfa0
commit
0dca5362b9
@ -1172,9 +1172,11 @@ public class ElasticSearchClient implements SearchClient {
|
|||||||
processedNodes.add(nodeFailureId);
|
processedNodes.add(nodeFailureId);
|
||||||
if (nodesWithFailures.contains(nodeFailureId)) {
|
if (nodesWithFailures.contains(nodeFailureId)) {
|
||||||
Map<String, Object> node = allNodes.get(nodeFailureId);
|
Map<String, Object> node = allNodes.get(nodeFailureId);
|
||||||
node.keySet().removeAll(FIELDS_TO_REMOVE);
|
if (node != null) {
|
||||||
node.remove("lineage");
|
node.keySet().removeAll(FIELDS_TO_REMOVE);
|
||||||
nodes.add(allNodes.get(nodeFailureId));
|
node.remove("lineage");
|
||||||
|
nodes.add(node);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
List<Map<String, Object>> edgesForNode = allEdges.get(nodeFailureId);
|
List<Map<String, Object>> edgesForNode = allEdges.get(nodeFailureId);
|
||||||
if (edgesForNode != null) {
|
if (edgesForNode != null) {
|
||||||
|
|||||||
@ -1097,7 +1097,8 @@ public class OpenSearchClient implements SearchClient {
|
|||||||
nodesWithFailures,
|
nodesWithFailures,
|
||||||
new HashSet<>());
|
new HashSet<>());
|
||||||
for (String nodeWithFailure : nodesWithFailures) {
|
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(
|
private void traceBackDQLineage(
|
||||||
String nodeFailureId,
|
String nodeFailureId,
|
||||||
|
Set<String> nodesWithFailures,
|
||||||
Map<String, List<Map<String, Object>>> allEdges,
|
Map<String, List<Map<String, Object>>> allEdges,
|
||||||
Map<String, Map<String, Object>> allNodes,
|
Map<String, Map<String, Object>> allNodes,
|
||||||
Set<Map<String, Object>> nodes,
|
Set<Map<String, Object>> nodes,
|
||||||
@ -1164,7 +1166,14 @@ public class OpenSearchClient implements SearchClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
processedNodes.add(nodeFailureId);
|
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);
|
List<Map<String, Object>> edgesForNode = allEdges.get(nodeFailureId);
|
||||||
if (edgesForNode != null) {
|
if (edgesForNode != null) {
|
||||||
for (Map<String, Object> edge : edgesForNode) {
|
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
|
if (!fromEntityId.equals(nodeFailureId)) continue; // skip if the edge is from the node
|
||||||
Map<String, String> toEntity = (Map<String, String>) edge.get("toEntity");
|
Map<String, String> toEntity = (Map<String, String>) edge.get("toEntity");
|
||||||
edges.add(edge);
|
edges.add(edge);
|
||||||
traceBackDQLineage(toEntity.get("id"), allEdges, allNodes, nodes, edges, processedNodes);
|
traceBackDQLineage(
|
||||||
|
toEntity.get("id"),
|
||||||
|
nodesWithFailures,
|
||||||
|
allEdges,
|
||||||
|
allNodes,
|
||||||
|
nodes,
|
||||||
|
edges,
|
||||||
|
processedNodes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user