This is an automated email from the ASF dual-hosted git repository.
amestry 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 a43b548 ATLAS-3773: Shadow Attributes Update Post-Migration from 0.8.
a43b548 is described below
commit a43b5488fbd10c874d181bf27e076fd502693a93
Author: Ashutosh Mestry <[email protected]>
AuthorDate: Fri May 1 10:54:41 2020 -0700
ATLAS-3773: Shadow Attributes Update Post-Migration from 0.8.
---
.../repository/patches/UniqueAttributePatch.java | 43 +++++++++++++++++++---
1 file changed, 37 insertions(+), 6 deletions(-)
diff --git
a/repository/src/main/java/org/apache/atlas/repository/patches/UniqueAttributePatch.java
b/repository/src/main/java/org/apache/atlas/repository/patches/UniqueAttributePatch.java
index 2b58119..d3111f1 100644
---
a/repository/src/main/java/org/apache/atlas/repository/patches/UniqueAttributePatch.java
+++
b/repository/src/main/java/org/apache/atlas/repository/patches/UniqueAttributePatch.java
@@ -23,7 +23,11 @@ import org.apache.atlas.pc.WorkItemManager;
import org.apache.atlas.repository.Constants;
import org.apache.atlas.repository.IndexException;
import org.apache.atlas.repository.graph.GraphBackedSearchIndexer.UniqueKind;
-import org.apache.atlas.repository.graphdb.*;
+import org.apache.atlas.repository.graphdb.AtlasCardinality;
+import org.apache.atlas.repository.graphdb.AtlasGraph;
+import org.apache.atlas.repository.graphdb.AtlasGraphManagement;
+import org.apache.atlas.repository.graphdb.AtlasSchemaViolationException;
+import org.apache.atlas.repository.graphdb.AtlasVertex;
import org.apache.atlas.repository.store.graph.v2.AtlasGraphUtilsV2;
import org.apache.atlas.repository.store.graph.v2.EntityGraphRetriever;
import org.apache.atlas.type.AtlasEntityType;
@@ -159,10 +163,37 @@ public class UniqueAttributePatch extends
AtlasPatchHandler {
protected void processItem(Long vertexId, AtlasVertex vertex, String
typeName, AtlasEntityType entityType) {
LOG.debug("processItem(typeName={}, vertexId={})", typeName,
vertexId);
+ processIndexStringAttribute(vertexId, vertex, typeName,
entityType);
+ processUniqueAttribute(vertexId, vertex, typeName, entityType);
+
+ LOG.debug("processItem(typeName={}, vertexId={}): Done!",
typeName, vertexId);
+ }
+
+ private void processIndexStringAttribute(Long vertexId, AtlasVertex
vertex, String typeName, AtlasEntityType entityType) {
+ for (AtlasAttribute attribute :
entityType.getAllAttributes().values()) {
+ if (attribute.getAttributeDef().getIndexType() != null &&
+ attribute.getAttributeDef().getIndexType() ==
AtlasAttributeDef.IndexType.STRING) {
+
+ String vertexPropertyName =
attribute.getVertexPropertyName();
+ if (vertex.getProperty(vertexPropertyName, String.class)
!= null) {
+ continue;
+ }
+
+ Object attrVal =
AtlasGraphUtilsV2.getEncodedProperty(vertex, attribute.getQualifiedName(),
String.class);
+ if (attrVal != null) {
+ AtlasGraphUtilsV2.setEncodedProperty(vertex,
vertexPropertyName, attrVal);
+ }
+ }
+ }
+
+ LOG.debug("processIndexStringAttribute(typeName={}, vertexId={}):
Done!", typeName, vertexId);
+ }
+
+ private void processUniqueAttribute(Long vertexId, AtlasVertex vertex,
String typeName, AtlasEntityType entityType) {
for (AtlasAttribute attribute :
entityType.getUniqAttributes().values()) {
- String uniquePropertyKey =
attribute.getVertexUniquePropertyName();
- Collection<? extends String> propertyKeys =
vertex.getPropertyKeys();
- Object uniqAttrValue = null;
+ String uniquePropertyKey =
attribute.getVertexUniquePropertyName();
+ Collection<? extends String> propertyKeys =
vertex.getPropertyKeys();
+ Object uniqAttrValue = null;
if (propertyKeys == null ||
!propertyKeys.contains(uniquePropertyKey)) {
try {
@@ -171,14 +202,14 @@ public class UniqueAttributePatch extends
AtlasPatchHandler {
uniqAttrValue =
EntityGraphRetriever.mapVertexToPrimitive(vertex, propertyKey,
attribute.getAttributeDef());
AtlasGraphUtilsV2.setEncodedProperty(vertex,
uniquePropertyKey, uniqAttrValue);
- } catch(AtlasSchemaViolationException ex) {
+ } catch (AtlasSchemaViolationException ex) {
LOG.error("Duplicates detected: {}:{}:{}", typeName,
uniqAttrValue, getIdFromVertex(vertex));
vertex.removeProperty(uniquePropertyKey);
}
}
}
- LOG.debug("processItem(typeName={}, vertexId={}): Done!",
typeName, vertexId);
+ LOG.debug("processUniqueAttribute(typeName={}, vertexId={}):
Done!", typeName, vertexId);
}
}
}