From ec5c83441a8bd2f744bd45931136f8215edfb41c Mon Sep 17 00:00:00 2001 From: Mohit Yadav <105265192+mohityadav766@users.noreply.github.com> Date: Wed, 9 Apr 2025 11:35:59 +0530 Subject: [PATCH] Fix Add Derived Tags while batch fetching (#20716) --- .../openmetadata/service/jdbi3/EntityRepository.java | 6 +++++- .../service/resources/tags/TagLabelUtil.java | 11 ++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/EntityRepository.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/EntityRepository.java index d882b14fa32..254fef7bc02 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/EntityRepository.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/EntityRepository.java @@ -4156,7 +4156,11 @@ public abstract class EntityRepository { if (targetFQN != null) { TagLabel tagLabel = tagFQNLabelMap.get(tagWithHash.getTagFQN()); - tagsMap.computeIfAbsent(targetFQN, k -> new ArrayList<>()).add(tagLabel); + if (tagLabel != null) { + tagsMap.computeIfAbsent(targetFQN, k -> new ArrayList<>()).add(tagLabel); + } else { + LOG.warn("Missing TagLabel for TagFQN in batch Fetch Tags: {}", tagWithHash.getTagFQN()); + } } } diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/resources/tags/TagLabelUtil.java b/openmetadata-service/src/main/java/org/openmetadata/service/resources/tags/TagLabelUtil.java index fdd952882f8..9d22764e042 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/resources/tags/TagLabelUtil.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/resources/tags/TagLabelUtil.java @@ -23,6 +23,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Set; import java.util.TreeSet; import java.util.stream.Collectors; @@ -105,14 +106,18 @@ public class TagLabelUtil { return tagLabels; } - // Filter out all the derived tags List filteredTags = - tagLabels.stream().filter(tag -> tag.getLabelType() != TagLabel.LabelType.DERIVED).toList(); + tagLabels.stream() + .filter(Objects::nonNull) + .filter(tag -> tag.getLabelType() != TagLabel.LabelType.DERIVED) + .toList(); List updatedTagLabels = new ArrayList<>(); EntityUtil.mergeTags(updatedTagLabels, filteredTags); for (TagLabel tagLabel : tagLabels) { - EntityUtil.mergeTags(updatedTagLabels, getDerivedTags(tagLabel)); + if (tagLabel != null) { + EntityUtil.mergeTags(updatedTagLabels, getDerivedTags(tagLabel)); + } } updatedTagLabels.sort(compareTagLabel); return updatedTagLabels;