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);

Reply via email to