This is an automated email from the ASF dual-hosted git repository.
madhan 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 f687fb7 ATLAS-3492: updated object-id attributes in audit logs to
replace unassigned-guids with assigned-guids
f687fb7 is described below
commit f687fb7d12d5ed752b85f813fbd550e26105daeb
Author: Madhan Neethiraj <[email protected]>
AuthorDate: Thu Oct 24 16:39:45 2019 -0700
ATLAS-3492: updated object-id attributes in audit logs to replace
unassigned-guids with assigned-guids
---
.../store/graph/v2/EntityGraphMapper.java | 62 +++++++++++++++++++---
.../main/java/org/apache/atlas/RequestContext.java | 39 ++++++++++++--
2 files changed, 91 insertions(+), 10 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 48466c1..749c307 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
@@ -597,6 +597,8 @@ public class EntityGraphMapper {
true,
ctx.getAttribute().getRelationshipEdgeDirection(), ctx.getReferringVertex());
}
+ setAssignedGuid(ctx.getValue(), context.getGuidAssignments());
+
return newEdge;
}
@@ -626,6 +628,8 @@ public class EntityGraphMapper {
}
}
+ setAssignedGuid(ctx.getValue(), context.getGuidAssignments());
+
return ret;
}
@@ -886,10 +890,16 @@ public class EntityGraphMapper {
AtlasVertex entityVertex =
context.getDiscoveryContext().getResolvedEntityVertex(guid);
if (entityVertex == null) {
- AtlasObjectId objId = getObjectId(ctx.getValue());
+ if (AtlasTypeUtil.isAssignedGuid(guid)) {
+ entityVertex = context.getVertex(guid);
+ }
+
+ if (entityVertex == null) {
+ AtlasObjectId objId = getObjectId(ctx.getValue());
- if (objId != null) {
- entityVertex =
context.getDiscoveryContext().getResolvedEntityVertex(objId);
+ if (objId != null) {
+ entityVertex =
context.getDiscoveryContext().getResolvedEntityVertex(objId);
+ }
}
}
@@ -921,14 +931,21 @@ public class EntityGraphMapper {
LOG.debug("==> mapObjectIdValueUsingRelationship({})", ctx);
}
- AtlasVertex attributeVertex =
context.getDiscoveryContext().getResolvedEntityVertex(getGuid(ctx.getValue()));
+ String guid = getGuid(ctx.getValue());
+ AtlasVertex attributeVertex =
context.getDiscoveryContext().getResolvedEntityVertex(guid);
AtlasVertex entityVertex = ctx.getReferringVertex();
AtlasEdge ret;
if (attributeVertex == null) {
- AtlasObjectId objectId = getObjectId(ctx.getValue());
+ if (AtlasTypeUtil.isAssignedGuid(guid)) {
+ attributeVertex = context.getVertex(guid);
+ }
+
+ if (attributeVertex == null) {
+ AtlasObjectId objectId = getObjectId(ctx.getValue());
- attributeVertex = (objectId != null) ?
context.getDiscoveryContext().getResolvedEntityVertex(objectId) : null;
+ attributeVertex = (objectId != null) ?
context.getDiscoveryContext().getResolvedEntityVertex(objectId) : null;
+ }
}
if (attributeVertex == null) {
@@ -1287,6 +1304,39 @@ public class EntityGraphMapper {
return null;
}
+ private static void setAssignedGuid(Object val, Map<String, String>
guidAssignements) {
+ if (val != null && MapUtils.isNotEmpty(guidAssignements)) {
+ if (val instanceof AtlasObjectId) {
+ AtlasObjectId objId = (AtlasObjectId) val;
+ String guid = objId.getGuid();
+
+ if (StringUtils.isNotEmpty(guid) &&
!AtlasTypeUtil.isAssignedGuid(guid)) {
+ String assignedGuid = guidAssignements.get(guid);
+
+ if (StringUtils.isNotEmpty(assignedGuid)) {
+ RequestContext.get().recordEntityGuidUpdate(objId,
guid);
+
+ objId.setGuid(assignedGuid);
+ }
+ }
+ } else if (val instanceof Map) {
+ Map objId = (Map) val;
+ Object guidVal = objId.get(AtlasObjectId.KEY_GUID);
+ String guid = objId != null ? guidVal.toString() : null;
+
+ if (StringUtils.isNotEmpty(guid) &&
!AtlasTypeUtil.isAssignedGuid(guid)) {
+ String assignedGuid = guidAssignements.get(guid);
+
+ if (StringUtils.isNotEmpty(assignedGuid)) {
+ RequestContext.get().recordEntityGuidUpdate(objId,
guid);
+
+ objId.put(AtlasObjectId.KEY_GUID, assignedGuid);
+ }
+ }
+ }
+ }
+ }
+
private static Map<String, Object> getRelationshipAttributes(Object val)
throws AtlasBaseException {
if (val instanceof AtlasRelatedObjectId) {
AtlasStruct relationshipStruct = ((AtlasRelatedObjectId)
val).getRelationshipAttributes();
diff --git a/server-api/src/main/java/org/apache/atlas/RequestContext.java
b/server-api/src/main/java/org/apache/atlas/RequestContext.java
index 009a664..3d2a18f 100644
--- a/server-api/src/main/java/org/apache/atlas/RequestContext.java
+++ b/server-api/src/main/java/org/apache/atlas/RequestContext.java
@@ -22,6 +22,7 @@ import org.apache.atlas.model.instance.AtlasClassification;
import org.apache.atlas.model.instance.AtlasEntity;
import org.apache.atlas.model.instance.AtlasEntity.AtlasEntityWithExtInfo;
import org.apache.atlas.model.instance.AtlasEntityHeader;
+import org.apache.atlas.model.instance.AtlasObjectId;
import org.apache.atlas.store.DeleteType;
import org.apache.atlas.utils.AtlasPerfMetrics;
import org.apache.atlas.utils.AtlasPerfMetrics.MetricRecorder;
@@ -37,6 +38,8 @@ import java.util.ArrayList;
import java.util.HashSet;
import java.util.HashMap;
+import static org.apache.atlas.model.instance.AtlasObjectId.KEY_GUID;
+
public class RequestContext {
private static final Logger METRICS = LoggerFactory.getLogger("METRICS");
@@ -337,11 +340,23 @@ public class RequestContext {
}
public void recordEntityGuidUpdate(AtlasEntity entity, String
guidInRequest) {
+ recordEntityGuidUpdate(new EntityGuidPair(entity, guidInRequest));
+ }
+
+ public void recordEntityGuidUpdate(AtlasObjectId entity, String
guidInRequest) {
+ recordEntityGuidUpdate(new EntityGuidPair(entity, guidInRequest));
+ }
+
+ public void recordEntityGuidUpdate(Map entity, String guidInRequest) {
+ recordEntityGuidUpdate(new EntityGuidPair(entity, guidInRequest));
+ }
+
+ public void recordEntityGuidUpdate(EntityGuidPair record) {
if (entityGuidInRequest == null) {
entityGuidInRequest = new ArrayList<>();
}
- entityGuidInRequest.add(new EntityGuidPair(entity, guidInRequest));
+ entityGuidInRequest.add(record);
}
public void resetEntityGuidUpdates() {
@@ -353,16 +368,32 @@ public class RequestContext {
}
public class EntityGuidPair {
- private final AtlasEntity entity;
- private final String guid;
+ private final Object entity;
+ private final String guid;
public EntityGuidPair(AtlasEntity entity, String guid) {
this.entity = entity;
this.guid = guid;
}
+ public EntityGuidPair(AtlasObjectId entity, String guid) {
+ this.entity = entity;
+ this.guid = guid;
+ }
+
+ public EntityGuidPair(Map entity, String guid) {
+ this.entity = entity;
+ this.guid = guid;
+ }
+
public void resetEntityGuid() {
- entity.setGuid(guid);
+ if (entity instanceof AtlasEntity) {
+ ((AtlasEntity) entity).setGuid(guid);
+ } else if (entity instanceof AtlasObjectId) {
+ ((AtlasObjectId) entity).setGuid(guid);
+ } else if (entity instanceof Map) {
+ ((Map) entity).put(KEY_GUID, guid);
+ }
}
}