diff --git a/repository/src/main/java/org/apache/atlas/discovery/EntityLineageService.java b/repository/src/main/java/org/apache/atlas/discovery/EntityLineageService.java index 4f169d9027..01fa5108ab 100644 --- a/repository/src/main/java/org/apache/atlas/discovery/EntityLineageService.java +++ b/repository/src/main/java/org/apache/atlas/discovery/EntityLineageService.java @@ -654,31 +654,40 @@ private void processEdge(final AtlasEdge edge, final Map entities) throws AtlasBaseException { + if (entities.containsKey(guid)) { + return; } - if (visitedEdges != null) { - String visitedEdgeLabel = isInputEdge ? getVisitedEdgeLabel(inGuid, outGuid, relationGuid) : getVisitedEdgeLabel(outGuid, inGuid, relationGuid); + AtlasEntityHeader entityHeader = entityRetriever.toAtlasEntityHeader(vertex); - visitedEdges.add(visitedEdgeLabel); + if (isEntityReadAllowed(entityHeader)) { + entities.put(guid, entityHeader); } } + private boolean isEntityReadAllowed(AtlasEntityHeader entityHeader) { + return AtlasAuthorizationUtils.isAccessAllowed(new AtlasEntityAccessRequest(atlasTypeRegistry, AtlasPrivilege.ENTITY_READ, entityHeader)); + } + private AtlasLineageInfo getBothLineageInfoV1(String guid, int depth, boolean isDataSet) throws AtlasBaseException { AtlasLineageInfo inputLineage = getLineageInfo(guid, INPUT, depth, isDataSet); AtlasLineageInfo outputLineage = getLineageInfo(guid, OUTPUT, depth, isDataSet);