You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by sa...@apache.org on 2019/12/05 04:57:18 UTC
[atlas] branch master updated: ATLAS-3545: NullPointerException
while trying to delete classification
This is an automated email from the ASF dual-hosted git repository.
sarath pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/atlas.git
The following commit(s) were added to refs/heads/master by this push:
new c95aba2 ATLAS-3545: NullPointerException while trying to delete classification
c95aba2 is described below
commit c95aba218b9318ce44abf574faff62908f24916d
Author: Sarath Subramanian <sa...@apache.org>
AuthorDate: Wed Dec 4 20:16:36 2019 -0800
ATLAS-3545: NullPointerException while trying to delete classification
---
.../store/graph/v2/EntityGraphMapper.java | 8 ++++
.../store/graph/v2/EntityGraphRetriever.java | 51 ++++++++++++++--------
2 files changed, 41 insertions(+), 18 deletions(-)
diff --git a/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphMapper.java b/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphMapper.java
index a114d25..a415d30 100644
--- a/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphMapper.java
+++ b/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphMapper.java
@@ -1862,6 +1862,10 @@ public class EntityGraphMapper {
AtlasVertex classificationVertex = getClassificationVertex(entityVertex, classificationName);
AtlasClassification classification = entityRetriever.toAtlasClassification(classificationVertex);
+ if (classification == null) {
+ throw new AtlasBaseException(AtlasErrorCode.CLASSIFICATION_NOT_FOUND, classificationName);
+ }
+
// remove classification from propagated entities if propagation is turned on
if (isPropagationEnabled(classificationVertex)) {
List<AtlasVertex> propagatedEntityVertices = deleteDelegate.getHandler().removeTagPropagation(classificationVertex);
@@ -2028,6 +2032,10 @@ public class EntityGraphMapper {
AtlasClassification currentClassification = entityRetriever.toAtlasClassification(classificationVertex);
+ if (currentClassification == null) {
+ continue;
+ }
+
validateAndNormalizeForUpdate(classification);
boolean isClassificationUpdated = false;
diff --git a/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphRetriever.java b/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphRetriever.java
index 6b11173..8a24fa1 100644
--- a/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphRetriever.java
+++ b/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphRetriever.java
@@ -277,20 +277,27 @@ public class EntityGraphRetriever {
}
public AtlasClassification toAtlasClassification(AtlasVertex classificationVertex) throws AtlasBaseException {
- AtlasClassification ret = new AtlasClassification(getTypeName(classificationVertex));
+ AtlasClassification ret = null;
+ String classificationName = getTypeName(classificationVertex);
- ret.setEntityGuid(AtlasGraphUtilsV2.getEncodedProperty(classificationVertex, CLASSIFICATION_ENTITY_GUID, String.class));
- ret.setEntityStatus(getClassificationEntityStatus(classificationVertex));
- ret.setPropagate(isPropagationEnabled(classificationVertex));
- ret.setRemovePropagationsOnEntityDelete(getRemovePropagations(classificationVertex));
+ if (StringUtils.isEmpty(classificationName)) {
+ LOG.warn("Ignoring invalid classification vertex: {}", AtlasGraphUtilsV2.toString(classificationVertex));
+ } else {
+ ret = new AtlasClassification(classificationName);
- String strValidityPeriods = AtlasGraphUtilsV2.getEncodedProperty(classificationVertex, CLASSIFICATION_VALIDITY_PERIODS_KEY, String.class);
+ ret.setEntityGuid(AtlasGraphUtilsV2.getEncodedProperty(classificationVertex, CLASSIFICATION_ENTITY_GUID, String.class));
+ ret.setEntityStatus(getClassificationEntityStatus(classificationVertex));
+ ret.setPropagate(isPropagationEnabled(classificationVertex));
+ ret.setRemovePropagationsOnEntityDelete(getRemovePropagations(classificationVertex));
- if (strValidityPeriods != null) {
- ret.setValidityPeriods(AtlasJson.fromJson(strValidityPeriods, TIME_BOUNDARIES_LIST_TYPE));
- }
+ String strValidityPeriods = AtlasGraphUtilsV2.getEncodedProperty(classificationVertex, CLASSIFICATION_VALIDITY_PERIODS_KEY, String.class);
- mapAttributes(classificationVertex, ret, null);
+ if (strValidityPeriods != null) {
+ ret.setValidityPeriods(AtlasJson.fromJson(strValidityPeriods, TIME_BOUNDARIES_LIST_TYPE));
+ }
+
+ mapAttributes(classificationVertex, ret, null);
+ }
return ret;
}
@@ -621,10 +628,12 @@ public class EntityGraphRetriever {
Iterator<AtlasEdge> iterator = edges.iterator();
while (iterator.hasNext()) {
- AtlasEdge edge = iterator.next();
+ AtlasEdge classificationEdge = iterator.next();
+ AtlasVertex classificationVertex = classificationEdge != null ? classificationEdge.getInVertex() : null;
+ AtlasClassification classification = toAtlasClassification(classificationVertex);
- if (edge != null) {
- ret.add(toAtlasClassification(edge.getInVertex()));
+ if (classification != null) {
+ ret.add(classification);
}
}
}
@@ -711,12 +720,15 @@ public class EntityGraphRetriever {
List<AtlasEdge> edges = getAllClassificationEdges(entityVertex);
if (CollectionUtils.isNotEmpty(edges)) {
- List<AtlasClassification> allClassifications = new ArrayList<>();
+ List<AtlasClassification> allClassifications = new ArrayList<>();
for (AtlasEdge edge : edges) {
- AtlasVertex classificationVertex = edge.getInVertex();
+ AtlasVertex classificationVertex = edge.getInVertex();
+ AtlasClassification classification = toAtlasClassification(classificationVertex);
- allClassifications.add(toAtlasClassification(classificationVertex));
+ if (classification != null) {
+ allClassifications.add(classification);
+ }
}
entity.setClassifications(allClassifications);
@@ -1387,7 +1399,10 @@ public class EntityGraphRetriever {
for (AtlasVertex classificationVertex : classificationVertices) {
String classificationId = classificationVertex.getIdForDisplay();
AtlasClassification classification = toAtlasClassification(classificationVertex);
- String entityGuid = classification.getEntityGuid();
+
+ if (classification == null) {
+ continue;
+ }
if (blockedClassificationIds.contains(classificationId)) {
blockedClassifications.add(classification);
@@ -1397,7 +1412,7 @@ public class EntityGraphRetriever {
// add entity headers to referred entities
if (extendedInfo) {
- addToReferredEntities(relationshipWithExtInfo, entityGuid);
+ addToReferredEntities(relationshipWithExtInfo, classification.getEntityGuid());
}
}