You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by su...@apache.org on 2016/08/17 16:29:32 UTC

incubator-atlas git commit: ATLAS-1122 Change trait edge labels to have trait name alone (sumasai)

Repository: incubator-atlas
Updated Branches:
  refs/heads/master 6fddccd6a -> eb98bfe78


ATLAS-1122 Change trait edge labels to have trait name alone (sumasai)


Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/eb98bfe7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/eb98bfe7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/eb98bfe7

Branch: refs/heads/master
Commit: eb98bfe78942caf1fa630e35f619f3a4f2f61856
Parents: 6fddccd
Author: Suma Shivaprasad <su...@gmail.com>
Authored: Wed Aug 17 09:29:26 2016 -0700
Committer: Suma Shivaprasad <su...@gmail.com>
Committed: Wed Aug 17 09:29:26 2016 -0700

----------------------------------------------------------------------
 release-log.txt                                 |  1 +
 .../atlas/repository/graph/GraphHelper.java     |  2 +-
 .../query/GraphPersistenceStrategies.scala      |  2 +-
 .../GraphBackedMetadataRepositoryTest.java      | 56 +++++++++++---------
 .../apache/atlas/query/HiveTitanSample.scala    |  2 +-
 5 files changed, 34 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/eb98bfe7/release-log.txt
----------------------------------------------------------------------
diff --git a/release-log.txt b/release-log.txt
index 13f00e3..c7f1220 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -6,6 +6,7 @@ INCOMPATIBLE CHANGES:
 ATLAS-1060 Add composite indexes for exact match performance improvements for all attributes (sumasai via shwethags)
 
 ALL CHANGES:
+ATLAS-1122 Change trait edge labels to have trait name alone (sumasai)
 ATLAS-1121 NPE while submitting topology in StormHook (ayubkhan via sumasai)
 ATLAS-1119 Add retries for edge label creation (sumasai via shwethags)
 ATLAS-1111 Data loss is observed when atlas is restarted while hive_table metadata ingestion into kafka topic is in-progress(shwethags via sumasai)

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/eb98bfe7/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 657ed79..7072870 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
@@ -433,7 +433,7 @@ public final class GraphHelper {
     }
 
     public static String getTraitLabel(String typeName, String attrName) {
-        return typeName + "." + attrName;
+        return attrName;
     }
 
     public static List<String> getTraitNames(Vertex entityVertex) {

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/eb98bfe7/repository/src/main/scala/org/apache/atlas/query/GraphPersistenceStrategies.scala
----------------------------------------------------------------------
diff --git a/repository/src/main/scala/org/apache/atlas/query/GraphPersistenceStrategies.scala b/repository/src/main/scala/org/apache/atlas/query/GraphPersistenceStrategies.scala
index 21c152c..f774d97 100755
--- a/repository/src/main/scala/org/apache/atlas/query/GraphPersistenceStrategies.scala
+++ b/repository/src/main/scala/org/apache/atlas/query/GraphPersistenceStrategies.scala
@@ -203,7 +203,7 @@ object GraphPersistenceStrategy1 extends GraphPersistenceStrategies {
 
     val fieldPrefixInSelect = "it"
 
-    def traitLabel(cls: IDataType[_], traitName: String) = s"${cls.getName}.$traitName"
+    def traitLabel(cls: IDataType[_], traitName: String) = s"$traitName"
 
     def fieldNameInVertex(dataType: IDataType[_], aInfo: AttributeInfo) = GraphHelper.getQualifiedFieldName(dataType, aInfo.name)
 

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/eb98bfe7/repository/src/test/java/org/apache/atlas/repository/graph/GraphBackedMetadataRepositoryTest.java
----------------------------------------------------------------------
diff --git a/repository/src/test/java/org/apache/atlas/repository/graph/GraphBackedMetadataRepositoryTest.java b/repository/src/test/java/org/apache/atlas/repository/graph/GraphBackedMetadataRepositoryTest.java
index 1ebf3ae..3ca1f78 100755
--- a/repository/src/test/java/org/apache/atlas/repository/graph/GraphBackedMetadataRepositoryTest.java
+++ b/repository/src/test/java/org/apache/atlas/repository/graph/GraphBackedMetadataRepositoryTest.java
@@ -43,6 +43,7 @@ import org.apache.atlas.typesystem.Struct;
 import org.apache.atlas.typesystem.exception.EntityNotFoundException;
 import org.apache.atlas.typesystem.exception.TraitNotFoundException;
 import org.apache.atlas.typesystem.persistence.Id;
+import org.apache.atlas.typesystem.types.AttributeDefinition;
 import org.apache.atlas.typesystem.types.ClassType;
 import org.apache.atlas.typesystem.types.DataTypes;
 import org.apache.atlas.typesystem.types.HierarchicalTypeDefinition;
@@ -77,6 +78,7 @@ import static org.apache.atlas.typesystem.types.utils.TypesUtil.createClassTypeD
 import static org.apache.atlas.typesystem.types.utils.TypesUtil.createUniqueRequiredAttrDef;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotEquals;
+import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertTrue;
 
 /**
@@ -136,31 +138,35 @@ public class GraphBackedMetadataRepositoryTest {
     @Test
     //In some cases of parallel APIs, the edge is added, but get edge by label doesn't return the edge. ATLAS-1104
     public void testConcurrentCalls() throws Exception {
-        Referenceable dbInstance = new Referenceable(TestUtils.DATABASE_TYPE);
-        dbInstance.set("name", randomString());
-        dbInstance.set("description", "foo database");
-        final String id1 = createEntity(dbInstance).get(0);
+        final HierarchicalTypeDefinition<ClassType> refType =
+                createClassTypeDef(randomString(), ImmutableSet.<String>of());
+        HierarchicalTypeDefinition<ClassType> type =
+                createClassTypeDef(randomString(), ImmutableSet.<String>of(),
+                        new AttributeDefinition("ref", refType.typeName, Multiplicity.OPTIONAL, true, null));
+        typeSystem.defineClassType(refType);
+        typeSystem.defineClassType(type);
+
+        String refId1 = createEntity(new Referenceable(refType.typeName)).get(0);
+        String refId2 = createEntity(new Referenceable(refType.typeName)).get(0);
 
-        dbInstance.set("name", randomString());
-        final String id2 = createEntity(dbInstance).get(0);
+        final Referenceable instance1 = new Referenceable(type.typeName);
+        instance1.set("ref", new Referenceable(refId1, refType.typeName, null));
 
-        TraitType piiType = typeSystem.getDataType(TraitType.class, TestUtils.PII);
-        final ITypedStruct trait = piiType.convert(new Struct(TestUtils.PII), Multiplicity.REQUIRED);
+        final Referenceable instance2 = new Referenceable(type.typeName);
+        instance2.set("ref", new Referenceable(refId2, refType.typeName, null));
 
         ExecutorService executor = Executors.newFixedThreadPool(3);
         List<Future<Object>> futures = new ArrayList<>();
         futures.add(executor.submit(new Callable<Object>() {
             @Override
             public Object call() throws Exception {
-                repositoryService.addTrait(id1, trait);
-                return null;
+                return createEntity(instance1).get(0);
             }
         }));
         futures.add(executor.submit(new Callable<Object>() {
             @Override
             public Object call() throws Exception {
-                repositoryService.addTrait(id2, trait);
-                return null;
+                return createEntity(instance2).get(0);
             }
         }));
         futures.add(executor.submit(new Callable<Object>() {
@@ -170,25 +176,23 @@ public class GraphBackedMetadataRepositoryTest {
             }
         }));
 
-        for (Future future : futures) {
-            future.get();
-        }
+        String id1 = (String) futures.get(0).get();
+        String id2 = (String) futures.get(1).get();
+        futures.get(2).get();
         executor.shutdown();
 
-        boolean validated1 = assertEdge(id1);
-        boolean validated2 = assertEdge(id2);
-        assertNotEquals(validated1, validated2);
+        boolean validated1 = assertEdge(id1, type.typeName);
+        boolean validated2 = assertEdge(id2, type.typeName);
+        assertTrue(validated1 | validated2);
     }
 
-    private boolean assertEdge(String id) throws Exception {
+    private boolean assertEdge(String id, String typeName) throws Exception {
         TitanGraph graph = graphProvider.get();
         Vertex vertex = graph.query().has(Constants.GUID_PROPERTY_KEY, id).vertices().iterator().next();
-        Iterable<Edge> edges =
-                vertex.getEdges(Direction.OUT, TestUtils.DATABASE_TYPE + "." + TestUtils.PII);
-        if(!edges.iterator().hasNext()) {
-            repositoryService.deleteTrait(id, TestUtils.PII);
-            List<String> traits = repositoryService.getTraitNames(id);
-            assertTrue(traits.isEmpty());
+        Iterable<Edge> edges = vertex.getEdges(Direction.OUT, Constants.INTERNAL_PROPERTY_KEY_PREFIX + typeName + ".ref");
+        if (!edges.iterator().hasNext()) {
+            ITypedReferenceableInstance entity = repositoryService.getEntityDefinition(id);
+            assertNotNull(entity.get("ref"));
             return true;
         }
         return false;
@@ -237,7 +241,7 @@ public class GraphBackedMetadataRepositoryTest {
     public void testGetTraitLabel() throws Exception {
         Assert.assertEquals(
                 repositoryService.getTraitLabel(typeSystem.getDataType(ClassType.class, TestUtils.TABLE_TYPE),
-                        TestUtils.CLASSIFICATION), TestUtils.TABLE_TYPE + "." + TestUtils.CLASSIFICATION);
+                        TestUtils.CLASSIFICATION), TestUtils.CLASSIFICATION);
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/eb98bfe7/repository/src/test/scala/org/apache/atlas/query/HiveTitanSample.scala
----------------------------------------------------------------------
diff --git a/repository/src/test/scala/org/apache/atlas/query/HiveTitanSample.scala b/repository/src/test/scala/org/apache/atlas/query/HiveTitanSample.scala
index 67ce12b..2dfb67a 100755
--- a/repository/src/test/scala/org/apache/atlas/query/HiveTitanSample.scala
+++ b/repository/src/test/scala/org/apache/atlas/query/HiveTitanSample.scala
@@ -125,7 +125,7 @@ object HiveTitanSample {
             if (traits.isDefined) {
                 traits.get foreach { t =>
                     t.toGSon(vertices, edges)
-                    addEdge(t, s"${this.getClass.getSimpleName}.${t.getClass.getSimpleName}", edges)
+                    addEdge(t, s"${t.getClass.getSimpleName}", edges)
                 }
             }
         }