From fb2247062cd33fa0b8246585749a1d7f78ee15ba Mon Sep 17 00:00:00 2001 From: chaitalithombare Date: Thu, 6 Nov 2025 17:51:13 +0530 Subject: [PATCH] ATLAS-4889 : Incremental export : When an entity has tag propagated and is exported , the tag is not propagated to it in the export. --- .../repository/impexp/ExportService.java | 122 +++++++++++++++++- .../RelationshipAttributesExtractor.java | 2 +- .../impexp/ExportIncrementalTest.java | 50 +++++++ .../test/resources/classificationLineage.zip | Bin 0 -> 39829 bytes 4 files changed, 167 insertions(+), 7 deletions(-) create mode 100644 repository/src/test/resources/classificationLineage.zip diff --git a/repository/src/main/java/org/apache/atlas/repository/impexp/ExportService.java b/repository/src/main/java/org/apache/atlas/repository/impexp/ExportService.java index 8ccc63c1b17..03d5e7e57ce 100644 --- a/repository/src/main/java/org/apache/atlas/repository/impexp/ExportService.java +++ b/repository/src/main/java/org/apache/atlas/repository/impexp/ExportService.java @@ -23,6 +23,7 @@ import org.apache.atlas.glossary.GlossaryService; import org.apache.atlas.model.impexp.AtlasExportRequest; import org.apache.atlas.model.impexp.AtlasExportResult; +import org.apache.atlas.model.instance.AtlasClassification; import org.apache.atlas.model.instance.AtlasEntity; import org.apache.atlas.model.instance.AtlasEntity.AtlasEntityWithExtInfo; import org.apache.atlas.model.instance.AtlasObjectId; @@ -34,6 +35,8 @@ import org.apache.atlas.model.typedef.AtlasStructDef; import org.apache.atlas.model.typedef.AtlasTypesDef; import org.apache.atlas.repository.graph.GraphHelper; +import org.apache.atlas.repository.graphdb.AtlasEdge; +import org.apache.atlas.repository.graphdb.AtlasEdgeDirection; import org.apache.atlas.repository.graphdb.AtlasGraph; import org.apache.atlas.repository.graphdb.AtlasVertex; import org.apache.atlas.repository.store.graph.v2.AtlasGraphUtilsV2; @@ -43,24 +46,36 @@ import org.apache.atlas.util.AtlasGremlinQueryProvider; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.MapUtils; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import javax.inject.Inject; +import java.util.ArrayDeque; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Queue; import java.util.Set; import static org.apache.atlas.model.impexp.AtlasExportRequest.FETCH_TYPE_CONNECTED; import static org.apache.atlas.model.impexp.AtlasExportRequest.FETCH_TYPE_FULL; import static org.apache.atlas.model.impexp.AtlasExportRequest.FETCH_TYPE_INCREMENTAL; +import static org.apache.atlas.repository.Constants.CLASSIFICATION_EDGE_IS_PROPAGATED_PROPERTY_KEY; +import static org.apache.atlas.repository.Constants.CLASSIFICATION_EDGE_NAME_PROPERTY_KEY; +import static org.apache.atlas.repository.Constants.CLASSIFICATION_ENTITY_GUID; +import static org.apache.atlas.repository.Constants.CLASSIFICATION_LABEL; import static org.apache.atlas.repository.Constants.GUID_PROPERTY_KEY; import static org.apache.atlas.repository.Constants.MODIFICATION_TIMESTAMP_PROPERTY_KEY; +import static org.apache.atlas.repository.graph.GraphHelper.getGuid; +import static org.apache.atlas.repository.graph.GraphHelper.getTypeName; +import static org.apache.atlas.type.AtlasStructType.AtlasAttribute.AtlasRelationshipEdgeDirection.IN; +import static org.apache.atlas.type.AtlasStructType.AtlasAttribute.AtlasRelationshipEdgeDirection.OUT; @Component public class ExportService { @@ -75,6 +90,8 @@ public class ExportService { private final AuditsWriter auditsWriter; private ExportTypeProcessor exportTypeProcessor; private static final String ATLAS_TYPE_HIVE_DB = "hive_db"; + public static final String PROCESS_INPUTS = "__Process.inputs"; + public static final String PROCESS_OUTPUTS = "__Process.outputs"; @Inject public ExportService(final AtlasTypeRegistry typeRegistry, AtlasGraph graph, AuditsWriter auditsWriter, HdfsPathEntityCreator hdfsPathEntityCreator, GlossaryService glossaryService) { @@ -91,13 +108,14 @@ public AtlasExportResult run(ZipSink exportSink, AtlasExportRequest request, Str long startTime = System.currentTimeMillis(); AtlasExportResult result = new AtlasExportResult(request, userName, requestingIP, hostName, startTime, getCurrentChangeMarker()); ExportContext context = new ExportContext(result, exportSink); + RelationshipAttributesExtractor relationshipAttributesExtractor = new RelationshipAttributesExtractor(typeRegistry); exportTypeProcessor = new ExportTypeProcessor(typeRegistry, glossaryService); try { LOG.info("==> export(user={}, from={})", userName, requestingIP); - AtlasExportResult.OperationStatus[] statuses = processItems(request, context); + AtlasExportResult.OperationStatus[] statuses = processItems(request, context, relationshipAttributesExtractor); processTypesDef(context); @@ -219,20 +237,20 @@ private void processTypesDef(ExportContext context) { } } - private AtlasExportResult.OperationStatus[] processItems(AtlasExportRequest request, ExportContext context) { - AtlasExportResult.OperationStatus[] statuses = new AtlasExportResult.OperationStatus[request.getItemsToExport().size()]; - List itemsToExport = request.getItemsToExport(); + private AtlasExportResult.OperationStatus[] processItems(AtlasExportRequest request, ExportContext context, RelationshipAttributesExtractor relationshipAttributesExtractor) { + AtlasExportResult.OperationStatus[] statuses = new AtlasExportResult.OperationStatus[request.getItemsToExport().size()]; + List itemsToExport = request.getItemsToExport(); for (int i = 0; i < itemsToExport.size(); i++) { AtlasObjectId item = itemsToExport.get(i); - statuses[i] = processObjectId(item, context); + statuses[i] = processObjectId(item, context, relationshipAttributesExtractor); } return statuses; } - private AtlasExportResult.OperationStatus processObjectId(AtlasObjectId item, ExportContext context) { + private AtlasExportResult.OperationStatus processObjectId(AtlasObjectId item, ExportContext context, RelationshipAttributesExtractor relationshipAttributesExtractor) { LOG.debug("==> processObjectId({})", item); try { @@ -266,6 +284,11 @@ private AtlasExportResult.OperationStatus processObjectId(AtlasObjectId item, Ex context.isSkipConnectedFetch = false; } + if (context.fetchType != ExportFetchType.FULL && !context.skipLineage) { + for (String guid : entityGuids) { + addEntityGuids(guid, context, relationshipAttributesExtractor); + } + } } catch (AtlasBaseException excp) { LOG.error("Fetching entity failed for: {}", item, excp); @@ -413,6 +436,91 @@ private void addEntity(AtlasEntityWithExtInfo entityWithExtInfo, ExportContext c context.reportProgress(); } + public void addEntityGuids(String guid, ExportContext context, RelationshipAttributesExtractor relationshipAttributesExtractor) throws AtlasBaseException { + AtlasVertex adjacentVertex; + Iterator entityEdges; + Iterator propagateClassificationVertices; + Iterator appliedClassificationVertices; + String fetchedClassificationGuid; + List processedClassifications = new ArrayList<>(); + + AtlasVertex initialEntityVertex = entityGraphRetriever.getEntityVertex(guid); + for (AtlasClassification currentClassification : entityGraphRetriever.getAllClassifications(initialEntityVertex)) { + if (context.guidsProcessed.contains(currentClassification.getEntityGuid())) { + processedClassifications.add(currentClassification); + } + } + context.newAddedGuids.add(guid); + while (!context.newAddedGuids.isEmpty()) { + String currentGuid = context.newAddedGuids.poll(); + + AtlasVertex entityVertex = entityGraphRetriever.getEntityVertex(currentGuid); + String entityTypeName = getTypeName(entityVertex); + List classifications = entityGraphRetriever.getAllClassifications(entityVertex); + if (CollectionUtils.isNotEmpty(processedClassifications)) { + classifications.removeAll(processedClassifications); + } + if (CollectionUtils.isNotEmpty(classifications)) { + for (AtlasClassification classification : classifications) { + String classificationName = classification.getTypeName(); + boolean isProcess = relationshipAttributesExtractor.isLineageType(entityTypeName); + entityEdges = isProcess + ? GraphHelper.getEdgesForLabel(entityVertex, PROCESS_INPUTS, OUT) + : GraphHelper.getEdgesForLabel(entityVertex, PROCESS_OUTPUTS, IN); + while (entityEdges.hasNext()) { + AtlasEdge propagationEdge = entityEdges.next(); + AtlasVertex outVertex = propagationEdge.getOutVertex(); + AtlasVertex inVertex = propagationEdge.getInVertex(); + adjacentVertex = StringUtils.equals(outVertex.getIdForDisplay(), entityVertex.getIdForDisplay()) ? inVertex : outVertex; + String adjacentGuid = getGuid(adjacentVertex); + boolean isPropagated = false; + propagateClassificationVertices = getClassificationVertices(inVertex, outVertex, isProcess, true, classificationName); + while (propagateClassificationVertices.hasNext()) { + AtlasVertex classificationVertex = propagateClassificationVertices.next(); + fetchedClassificationGuid = classificationVertex.getProperty(CLASSIFICATION_ENTITY_GUID, String.class); + if (StringUtils.equals(classification.getEntityGuid(), fetchedClassificationGuid)) { + addAdjacentVertices(context, adjacentGuid); + isPropagated = true; + } + } + if (!isPropagated) { + appliedClassificationVertices = getClassificationVertices(inVertex, outVertex, isProcess, false, classificationName); + + while (appliedClassificationVertices.hasNext()) { + AtlasVertex classificationVertex = appliedClassificationVertices.next(); + fetchedClassificationGuid = classificationVertex.getProperty(CLASSIFICATION_ENTITY_GUID, String.class); + if (StringUtils.equals(classification.getEntityGuid(), fetchedClassificationGuid)) { + addAdjacentVertices(context, adjacentGuid); + break; + } + } + } + } + } + } + } + } + + private Iterator getClassificationVertices(AtlasVertex inVertex, AtlasVertex outVertex, + boolean isProcess, boolean isPropagated, String name) { + AtlasVertex base = isProcess ? inVertex : outVertex; + return base.query() + .direction(AtlasEdgeDirection.OUT) + .label(CLASSIFICATION_LABEL) + .has(CLASSIFICATION_EDGE_IS_PROPAGATED_PROPERTY_KEY, isPropagated) + .has(CLASSIFICATION_EDGE_NAME_PROPERTY_KEY, name) + .vertices().iterator(); + } + + private void addAdjacentVertices(ExportContext context, String adjacentGuid) throws AtlasBaseException { + if (!context.newAddedGuids.contains(adjacentGuid)) { + context.newAddedGuids.add(adjacentGuid); + } + if (!context.sink.guids.contains(adjacentGuid)) { + context.addToSink(entityGraphRetriever.toAtlasEntityWithExtInfo(adjacentGuid)); + } + } + public enum TraversalDirection { UNKNOWN, INWARD, @@ -450,6 +558,7 @@ static class ExportContext { final UniqueList entityCreationOrder = new UniqueList<>(); final Set guidsProcessed = new HashSet<>(); final UniqueList guidsToProcess = new UniqueList<>(); + final Queue newAddedGuids = new ArrayDeque<>(); final UniqueList lineageToProcess = new UniqueList<>(); final Set lineageProcessed = new HashSet<>(); final Map guidDirection = new HashMap<>(); @@ -511,6 +620,7 @@ public void clear() { guidsToProcess.clear(); guidsProcessed.clear(); guidDirection.clear(); + newAddedGuids.clear(); startingEntityType = null; } diff --git a/repository/src/main/java/org/apache/atlas/repository/impexp/RelationshipAttributesExtractor.java b/repository/src/main/java/org/apache/atlas/repository/impexp/RelationshipAttributesExtractor.java index 6f42e1b85f9..857fb664eea 100644 --- a/repository/src/main/java/org/apache/atlas/repository/impexp/RelationshipAttributesExtractor.java +++ b/repository/src/main/java/org/apache/atlas/repository/impexp/RelationshipAttributesExtractor.java @@ -131,7 +131,7 @@ private TraversalDirection getRelationshipEdgeDirection(AtlasRelatedObjectId rel return isOutEdge ? OUTWARD : INWARD; } - private boolean isLineageType(String typeName) { + public boolean isLineageType(String typeName) { AtlasEntityDef entityDef = typeRegistry.getEntityDefByName(typeName); return entityDef.getSuperTypes().contains(AtlasBaseTypeDef.ATLAS_TYPE_PROCESS); diff --git a/repository/src/test/java/org/apache/atlas/repository/impexp/ExportIncrementalTest.java b/repository/src/test/java/org/apache/atlas/repository/impexp/ExportIncrementalTest.java index 3283e024174..fa166d38ac1 100644 --- a/repository/src/test/java/org/apache/atlas/repository/impexp/ExportIncrementalTest.java +++ b/repository/src/test/java/org/apache/atlas/repository/impexp/ExportIncrementalTest.java @@ -24,6 +24,7 @@ import org.apache.atlas.TestUtilsV2; import org.apache.atlas.exception.AtlasBaseException; import org.apache.atlas.model.impexp.AtlasExportRequest; +import org.apache.atlas.model.instance.AtlasClassification; import org.apache.atlas.model.instance.AtlasEntity; import org.apache.atlas.model.instance.AtlasObjectId; import org.apache.atlas.repository.AtlasTestBase; @@ -49,6 +50,7 @@ import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -78,6 +80,24 @@ public class ExportIncrementalTest extends AtlasTestBase { private static final String EXPORT_REQUEST_INCREMENTAL = "export-incremental"; private static final String EXPORT_REQUEST_CONNECTED = "export-connected"; + private static final String FIRSTPARENT = "589a233a-f00e-4928-8efd-e7e72e30d370"; + private static final String HIVEDB = "12eb7a9b-3b4d-48c9-902c-1fa2401823f7"; + private static final String CTASLEVEL13 = "6f1c413c-1b35-421a-aabd-d5f94873ddf0"; + private static final String CTASLEVEL12 = "58a68a94-67bb-488d-b111-3dfdd3a220eb"; + private static final String CTASLEVEL11 = "c6657df3-3bea-44cc-a356-a81c9e72f9c7"; + private static final String SECONDPARENT = "0ce3573b-c535-4bf9-970e-4d37f01806ef"; + private static final String CTLASLEVEL11_1 = "80a3ead2-6ad7-4881-bd85-5e8b4fdb01c5"; + private static final String HDFS_PATH = "d9c50322-b130-405e-b560-2b15bcdddb97"; + private static final String SECONDPARENT_PROCESS = "f611662a-4ea6-4707-b7e9-02848fb28529"; + private static final String CTASLEVEL13_PROCESS = "da34b191-5ab9-4934-94c6-5a97d3e59608"; + private static final String CTASLEVEL12_PROCESS = "33fc0f3c-3522-4aaa-83c7-258752abe824"; + private static final String CTASLEVEL11_1_PROCESS = "1339782e-fde7-402b-8271-2f91a65396e9"; + private static final String CTASLEVEL11_PROCESS = "64cde929-195a-4c90-a921-b8c4d79ddfcf"; + + // Resolved after import + private static final String CTASLEVEL11_1_TABLE_QUALIFIED_NAME = "default.ctaslevel11_1@cm"; + private static final String CTASLEVEL13_TABLE_QUALIFIED_NAME = "default.ctaslevel13@cm"; + @Inject AtlasTypeRegistry typeRegistry; @@ -96,6 +116,7 @@ public class ExportIncrementalTest extends AtlasTestBase { private AtlasClassificationType classificationTypeT1; private AtlasClassificationType classificationTypeT2; private AtlasClassificationType classificationTypeT3; + private long nextTimestamp; @DataProvider(name = "hiveDb") @@ -103,6 +124,11 @@ public static Object[][] getData(ITestContext context) throws IOException, Atlas return getZipSource("hive_db_lineage.zip"); } + @DataProvider(name = "classificationLineage") + public static Object[][] getClassificationData(ITestContext context) throws IOException, AtlasBaseException { + return getZipSource("classificationLineage.zip"); + } + @BeforeClass public void setup() throws IOException, AtlasBaseException { basicSetup(typeDefStore, typeRegistry); @@ -226,6 +252,11 @@ public void importHiveDb(InputStream stream) throws AtlasBaseException, IOExcept runImportWithNoParameters(importService, stream); } + @Test(dataProvider = "classificationLineage") + public void classificationineageDb(InputStream stream) throws AtlasBaseException, IOException { + runImportWithNoParameters(importService, stream); + } + @Test(dependsOnMethods = "importHiveDb") public void exportTableInrementalConnected() throws AtlasBaseException, IOException { InputStream source = runExportWithParameters(exportService, getExportRequestForHiveTable(QUALIFIED_NAME_TABLE_LINEAGE, EXPORT_INCREMENTAL, 0, true)); @@ -247,6 +278,25 @@ public void exportTableInrementalConnected() throws AtlasBaseException, IOExcept verifyExpectedEntities(getFileNames(getZipSourceCopy(source)), GUID_TABLE_CTAS_2); } + @Test(dependsOnMethods = "classificationineageDb") + public void exportTableInrementalConnectedClassificationLineage() throws AtlasBaseException, IOException { + InputStream source = runExportWithParameters(exportService, getExportRequestForHiveTable(CTASLEVEL11_1_TABLE_QUALIFIED_NAME, EXPORT_INCREMENTAL, 0, false)); + ZipSource sourceCopy = getZipSourceCopy(source); + if (entityStore.getClassification(FIRSTPARENT, "firstclassi") == null) { + entityStore.addClassification(Arrays.asList(FIRSTPARENT), new AtlasClassification("firstclassi", null)); + } + + verifyExpectedEntities(getFileNames(sourceCopy), HDFS_PATH, HIVEDB, CTLASLEVEL11_1, CTASLEVEL11_1_PROCESS, CTASLEVEL11_PROCESS, CTASLEVEL11, SECONDPARENT_PROCESS, + SECONDPARENT, FIRSTPARENT); + + nextTimestamp = updateTimesampForNextIncrementalExport(sourceCopy); + + entityStore.deleteClassification(FIRSTPARENT, "firstclassi", FIRSTPARENT); + + source = runExportWithParameters(exportService, getExportRequestForHiveTable(CTASLEVEL11_1_TABLE_QUALIFIED_NAME, EXPORT_INCREMENTAL, nextTimestamp, false)); + verifyExpectedEntities(getFileNames(getZipSourceCopy(source)), CTLASLEVEL11_1, CTASLEVEL11_1_PROCESS, CTASLEVEL11_PROCESS, CTASLEVEL11, SECONDPARENT); + } + @Test(dependsOnMethods = "importHiveDb") public void exportTableIncrementalForParentEntity() throws AtlasBaseException, IOException { InputStream source = runExportWithParameters(exportService, getExportRequestForHiveTable(QUALIFIED_NAME_TABLE_2, EXPORT_INCREMENTAL, 0, false)); diff --git a/repository/src/test/resources/classificationLineage.zip b/repository/src/test/resources/classificationLineage.zip new file mode 100644 index 0000000000000000000000000000000000000000..db10020ebec930872f64309713940c0c8fc10438 GIT binary patch literal 39829 zcmZ6yV{~TGwyv90Y}@7++qO}$ZQHhO+qUhbVkZ^b)~$8czNfW)e$6)jkI|p;qAN&) zfT98cK|%u2n22ef<$);_fdc`V;Q|3s0RaKAa&Q_jF*6$gOc@wV04$tL8~_dzQ)7S$ zy9qm!2{VH+GdlyFrIVfQk%pGtCL8KEO-L>qp);veV>!=EM>FIKna07j2^DN4k5u?% zqLifM_TZ0CSmNb)Yc@yJOZ_vMKh^!McJGaL`b}ymW;3`)YHFp5g1Y!FfE~UZ?=GI> zdY&ZLSqQnam2ik7x~Bk>i|A>l*D-YnEHBW-c)P+Y9o3}t4In`o?4p0yxI|q!DOMWF zqZpV*IF{j({9Dp-Uc;-Z>CEs+dISZHCcefTim@)y5s^kGnR7KhwJ+lAFH^TfiHBc{wesZoGqovpeOm45HH%S$3Jj3XZ{p14(OpC4=d%C40BpLTsdV+u)z~z|jYqjcRE8 zVHg@bD?V{qtFjE6wiKZ_bv_tQ7acjnP4K@V$w=T0q=*6n11%*uYwp{fvN4#+X}=c_ zu%X@A9qbEIx=`>CLq|L;iIel+r(RLX=xLJ8V&q0o{Bkk~Eg8c3b6Z{xlv1XiN=#SP zu~>8ZO{O1g(3#Qzt}niw;(f~!&2Sxw8#W_3lj1b{nZM*!JvR%z>U4SP`wtV=pF-D_ z&^!jsj9x8?+aoV(D~*!7h@Ajc&M&=IET*vjAIJy7cv9Wt`=qG7q>K;UL}e_kKAo

*3DmegR1g7esKL|SFwexajr41t>f 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 literal 0 HcmV?d00001