You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by ma...@apache.org on 2017/02/26 08:54:53 UTC

incubator-atlas git commit: ATLAS-1598: fix for NPE in Hive hook while processing create-table

Repository: incubator-atlas
Updated Branches:
  refs/heads/master 08944c54d -> 0c1d599dd


ATLAS-1598: fix for NPE in Hive hook while processing create-table


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

Branch: refs/heads/master
Commit: 0c1d599ddca7ad9e4c677c77908e96dd492a8f90
Parents: 08944c5
Author: Madhan Neethiraj <ma...@apache.org>
Authored: Sat Feb 25 15:23:29 2017 -0800
Committer: Madhan Neethiraj <ma...@apache.org>
Committed: Sun Feb 26 00:31:17 2017 -0800

----------------------------------------------------------------------
 .../org/apache/atlas/hive/hook/HiveHook.java    |  4 +--
 .../store/graph/v1/AtlasEntityStoreV1.java      | 34 ++++++++++++--------
 2 files changed, 23 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/0c1d599d/addons/hive-bridge/src/main/java/org/apache/atlas/hive/hook/HiveHook.java
----------------------------------------------------------------------
diff --git a/addons/hive-bridge/src/main/java/org/apache/atlas/hive/hook/HiveHook.java b/addons/hive-bridge/src/main/java/org/apache/atlas/hive/hook/HiveHook.java
index 2b256d0..16835cf 100755
--- a/addons/hive-bridge/src/main/java/org/apache/atlas/hive/hook/HiveHook.java
+++ b/addons/hive-bridge/src/main/java/org/apache/atlas/hive/hook/HiveHook.java
@@ -248,7 +248,7 @@ public class HiveHook extends AtlasHook implements ExecuteWithHookContext {
 
         case CREATETABLE:
             LinkedHashMap<Type, Referenceable> tablesCreated = handleEventOutputs(dgiBridge, event, Type.TABLE);
-            if (tablesCreated.size() > 0) {
+            if (tablesCreated != null && tablesCreated.size() > 0) {
                 handleExternalTables(dgiBridge, event, tablesCreated);
             }
             break;
@@ -730,7 +730,7 @@ public class HiveHook extends AtlasHook implements ExecuteWithHookContext {
             final String location = lower(hiveTable.getDataLocation().toString());
             final ReadEntity dfsEntity = new ReadEntity();
             dfsEntity.setTyp(Type.DFS_DIR);
-            dfsEntity.setName(location);
+            dfsEntity.setD(new Path(location));
 
             SortedMap<ReadEntity, Referenceable> hiveInputsMap = new TreeMap<ReadEntity, Referenceable>(entityComparator) {{
                 put(dfsEntity, dgiBridge.fillHDFSDataSet(location));

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/0c1d599d/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityStoreV1.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityStoreV1.java b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityStoreV1.java
index c0355d9..587f3c7 100644
--- a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityStoreV1.java
+++ b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityStoreV1.java
@@ -21,7 +21,6 @@ package org.apache.atlas.repository.store.graph.v1;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
 import org.apache.atlas.AtlasErrorCode;
-import org.apache.atlas.AtlasException;
 import org.apache.atlas.GraphTransaction;
 import org.apache.atlas.RequestContextV1;
 import org.apache.atlas.exception.AtlasBaseException;
@@ -38,12 +37,10 @@ import org.apache.atlas.repository.store.graph.AtlasEntityStore;
 import org.apache.atlas.repository.store.graph.EntityGraphDiscovery;
 import org.apache.atlas.repository.store.graph.EntityGraphDiscoveryContext;
 import org.apache.atlas.type.AtlasEntityType;
-import org.apache.atlas.type.AtlasStructType;
 import org.apache.atlas.type.AtlasStructType.AtlasAttribute;
 import org.apache.atlas.type.AtlasType;
 import org.apache.atlas.type.AtlasTypeRegistry;
 import org.apache.atlas.type.AtlasTypeUtil;
-import org.apache.atlas.typesystem.persistence.Id;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -326,17 +323,18 @@ public class AtlasEntityStoreV1 implements AtlasEntityStore {
         // Retrieve vertices for requested guids.
         AtlasVertex vertex = AtlasGraphUtilsV1.findByGuid(guid);
 
-        if (LOG.isDebugEnabled()) {
-            if (vertex == null) {
+        Collection<AtlasVertex> deletionCandidates = new ArrayList<>();
+
+        if (vertex != null) {
+            deletionCandidates.add(vertex);
+        } else {
+            if (LOG.isDebugEnabled()) {
                 // Entity does not exist - treat as non-error, since the caller
                 // wanted to delete the entity and it's already gone.
                 LOG.debug("Deletion request ignored for non-existent entity with guid " + guid);
             }
         }
 
-        Collection<AtlasVertex> deletionCandidates = new ArrayList<>();
-        deletionCandidates.add(vertex);
-
         EntityMutationResponse ret = deleteVertices(deletionCandidates);
 
         // Notify the change listeners
@@ -357,15 +355,16 @@ public class AtlasEntityStoreV1 implements AtlasEntityStore {
         for (String guid : guids) {
             // Retrieve vertices for requested guids.
             AtlasVertex vertex = AtlasGraphUtilsV1.findByGuid(guid);
-            if (LOG.isDebugEnabled()) {
-                if (vertex == null) {
+
+            if (vertex != null) {
+                deletionCandidates.add(vertex);
+            } else {
+                if (LOG.isDebugEnabled()) {
                     // Entity does not exist - treat as non-error, since the caller
                     // wanted to delete the entity and it's already gone.
                     LOG.debug("Deletion request ignored for non-existent entity with guid " + guid);
                 }
             }
-            deletionCandidates.add(vertex);
-
         }
 
         if (deletionCandidates.isEmpty()) {
@@ -391,7 +390,16 @@ public class AtlasEntityStoreV1 implements AtlasEntityStore {
 
         final AtlasVertex vertex = AtlasGraphUtilsV1.findByUniqueAttributes(entityType, uniqAttributes);
         Collection<AtlasVertex> deletionCandidates = new ArrayList<>();
-        deletionCandidates.add(vertex);
+
+        if (vertex != null) {
+            deletionCandidates.add(vertex);
+        } else {
+            if (LOG.isDebugEnabled()) {
+                // Entity does not exist - treat as non-error, since the caller
+                // wanted to delete the entity and it's already gone.
+                LOG.debug("Deletion request ignored for non-existent entity with uniqueAttributes " + uniqAttributes);
+            }
+        }
 
         EntityMutationResponse ret = deleteVertices(deletionCandidates);