Repository: incubator-atlas Updated Branches: refs/heads/master 7d622bdfa -> 0ed5e0aa5
ATLAS-1656: Lineage query performance improvement Signed-off-by: Madhan Neethiraj <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/0ed5e0aa Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/0ed5e0aa Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/0ed5e0aa Branch: refs/heads/master Commit: 0ed5e0aa5a0afb1cef8031e274645a8398d2a7f0 Parents: 7d622bd Author: Sarath Subramanian <[email protected]> Authored: Tue Mar 7 16:52:04 2017 -0800 Committer: Madhan Neethiraj <[email protected]> Committed: Tue Mar 7 17:38:38 2017 -0800 ---------------------------------------------------------------------- .../apache/atlas/discovery/EntityLineageService.java | 14 ++++++++------ .../apache/atlas/repository/graph/GraphHelper.java | 14 ++++++++++++++ 2 files changed, 22 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/0ed5e0aa/repository/src/main/java/org/apache/atlas/discovery/EntityLineageService.java ---------------------------------------------------------------------- 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 3035d16..b81754d 100644 --- a/repository/src/main/java/org/apache/atlas/discovery/EntityLineageService.java +++ b/repository/src/main/java/org/apache/atlas/discovery/EntityLineageService.java @@ -28,9 +28,9 @@ import org.apache.atlas.model.lineage.AtlasLineageInfo.LineageRelation; import org.apache.atlas.model.lineage.AtlasLineageInfo.LineageDirection; import org.apache.atlas.repository.Constants; import org.apache.atlas.repository.graph.AtlasGraphProvider; +import org.apache.atlas.repository.graph.GraphHelper; import org.apache.atlas.repository.graphdb.AtlasGraph; import org.apache.atlas.repository.graphdb.AtlasVertex; -import org.apache.atlas.repository.store.graph.v1.AtlasGraphUtilsV1; import org.apache.atlas.repository.store.graph.v1.EntityGraphRetriever; import org.apache.atlas.type.AtlasTypeRegistry; import org.apache.atlas.util.AtlasGremlinQueryProvider; @@ -172,14 +172,16 @@ public class EntityLineageService implements AtlasLineageService { } private boolean entityExists(String guid) { - boolean ret = false; + boolean ret = false; Iterator<AtlasVertex> results = graph.query() - .has(Constants.GUID_PROPERTY_KEY, guid) - .has(Constants.SUPER_TYPES_PROPERTY_KEY, AtlasClient.DATA_SET_SUPER_TYPE) - .vertices().iterator(); + .has(Constants.GUID_PROPERTY_KEY, guid) + .vertices().iterator(); while (results.hasNext()) { - return true; + AtlasVertex entityVertex = results.next(); + List<String> superTypes = GraphHelper.getSuperTypeNames(entityVertex); + + ret = (CollectionUtils.isNotEmpty(superTypes)) ? superTypes.contains(AtlasClient.DATA_SET_SUPER_TYPE) : false; } return ret; http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/0ed5e0aa/repository/src/main/java/org/apache/atlas/repository/graph/GraphHelper.java ---------------------------------------------------------------------- diff --git a/repository/src/main/java/org/apache/atlas/repository/graph/GraphHelper.java b/repository/src/main/java/org/apache/atlas/repository/graph/GraphHelper.java index d7bffff..ca7fad0 100755 --- a/repository/src/main/java/org/apache/atlas/repository/graph/GraphHelper.java +++ b/repository/src/main/java/org/apache/atlas/repository/graph/GraphHelper.java @@ -57,6 +57,7 @@ import org.apache.atlas.typesystem.types.utils.TypesUtil; import org.apache.atlas.util.AttributeValueMap; import org.apache.atlas.util.IndexedInstance; import org.apache.atlas.utils.ParamChecker; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.codehaus.jettison.json.JSONArray; import org.slf4j.Logger; @@ -613,6 +614,19 @@ public final class GraphHelper { return traits; } + public static List<String> getSuperTypeNames(AtlasVertex<?,?> entityVertex) { + ArrayList<String> superTypes = new ArrayList<>(); + Collection<String> propertyValues = entityVertex.getPropertyValues(Constants.SUPER_TYPES_PROPERTY_KEY, String.class); + + if (CollectionUtils.isNotEmpty(propertyValues)) { + for(String value : propertyValues) { + superTypes.add(value); + } + } + + return superTypes; + } + public static String getEdgeLabel(ITypedInstance typedInstance, AttributeInfo aInfo) throws AtlasException { IDataType dataType = typeSystem.getDataType(IDataType.class, typedInstance.getTypeName()); return getEdgeLabel(dataType, aInfo);
