Skip to content

Commit 3987248

Browse files
committed
Merge branch 'fix/gov-1255' into beta
2 parents d74e1d5 + 3de4641 commit 3987248

File tree

5 files changed

+60
-47
lines changed

5 files changed

+60
-47
lines changed

auth-agents-common/src/main/java/org/apache/atlas/policytransformer/CachePolicyTransformerImpl.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,6 @@ public ServicePolicies getPolicies(String serviceName, String pluginId, Long las
150150
if (service != null) {
151151
List<RangerPolicy> allPolicies = getServicePolicies(service);
152152
servicePolicies.setServiceName(serviceName);
153-
//servicePolicies.setPolicies(policies);
154153
servicePolicies.setServiceId(service.getGuid());
155154

156155
String serviceDefName = String.format(RESOURCE_SERVICE_DEF_PATTERN, serviceName);
@@ -168,7 +167,6 @@ public ServicePolicies getPolicies(String serviceName, String pluginId, Long las
168167
TagPolicies tagPolicies = new TagPolicies();
169168

170169
tagPolicies.setServiceName(tagServiceName);
171-
//tagPolicies.setPolicies(atlasTagPolicies);
172170
tagPolicies.setPolicyUpdateTime(new Date());
173171
tagPolicies.setServiceId(tagService.getGuid());
174172
tagPolicies.setPolicyVersion(-1L);
@@ -180,15 +178,15 @@ public ServicePolicies getPolicies(String serviceName, String pluginId, Long las
180178
}
181179
}
182180

183-
AtlasPerfMetrics.MetricRecorder recorder1 = RequestContext.get().startMetricRecord("filterPolicies");
181+
AtlasPerfMetrics.MetricRecorder recorderFilterPolicies = RequestContext.get().startMetricRecord("filterPolicies");
184182
//filter out policies based on serviceName
185183
List<RangerPolicy> policiesA = allPolicies.stream().filter(x -> serviceName.equals(x.getService())).collect(Collectors.toList());
186184
List<RangerPolicy> policiesB = allPolicies.stream().filter(x -> tagServiceName.equals(x.getService())).collect(Collectors.toList());
187185

188186
servicePolicies.setPolicies(policiesA);
189187
servicePolicies.getTagPolicies().setPolicies(policiesB);
190188

191-
RequestContext.get().endMetricRecord(recorder1);
189+
RequestContext.get().endMetricRecord(recorderFilterPolicies);
192190

193191
if (LOG.isDebugEnabled()) {
194192
LOG.debug("Found {} policies", servicePolicies.getPolicies().size());

repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasEntityStoreV2.java

Lines changed: 49 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1689,6 +1689,9 @@ private EntityMutationContext preCreateOrUpdate(EntityStream entityStream, Entit
16891689
}
16901690

16911691
private void autoUpdateStarredDetailsAttributes(AtlasEntity entity, AtlasVertex vertex) {
1692+
1693+
MetricRecorder metric = RequestContext.get().startMetricRecord("autoUpdateStarredDetailsAttributes");
1694+
16921695
Boolean starEntityForUser = entity.getStarred();
16931696

16941697
if (starEntityForUser != null) {
@@ -1719,41 +1722,9 @@ private void autoUpdateStarredDetailsAttributes(AtlasEntity entity, AtlasVertex
17191722
}
17201723

17211724
if (starEntityForUser) {
1722-
1723-
//Check and update starredBy Attribute
1724-
if (!starredBy.contains(requestUser)){
1725-
starredBy.add(requestUser);
1726-
}
1727-
1728-
//Check and update starredDetailsList Attribute
1729-
boolean isStarredDetailsListUpdated = false;
1730-
for (AtlasStruct starredDetails : starredDetailsList) {
1731-
String assetStarredBy = (String) starredDetails.getAttribute(ATTR_ASSET_STARRED_BY);
1732-
if (assetStarredBy.equals(requestUser)) {
1733-
starredDetails.setAttribute(ATTR_ASSET_STARRED_AT, requestTime);
1734-
isStarredDetailsListUpdated = true;
1735-
break;
1736-
}
1737-
}
1738-
if (!isStarredDetailsListUpdated) {
1739-
AtlasStruct starredDetails = getStarredDetailsStruct(requestUser, requestTime);
1740-
starredDetailsList.add(starredDetails);
1741-
}
1742-
1725+
addUserToStarredAttributes(requestUser, requestTime, starredBy, starredDetailsList);
17431726
} else {
1744-
1745-
//Check and update starredBy Attribute
1746-
if (starredBy.contains(requestUser)){
1747-
starredBy.remove(requestUser);
1748-
}
1749-
1750-
for (AtlasStruct starredDetails : starredDetailsList) {
1751-
String assetStarredBy = (String) starredDetails.getAttribute(ATTR_ASSET_STARRED_BY);
1752-
if (assetStarredBy.equals(requestUser)) {
1753-
starredDetailsList.remove(starredDetails);
1754-
break;
1755-
}
1756-
}
1727+
removeUserFromStarredAttributes(requestUser, starredBy, starredDetailsList);
17571728
}
17581729

17591730
// Update entity attributes
@@ -1764,6 +1735,45 @@ private void autoUpdateStarredDetailsAttributes(AtlasEntity entity, AtlasVertex
17641735
}
17651736

17661737
}
1738+
1739+
RequestContext.get().endMetricRecord(metric);
1740+
}
1741+
1742+
private void addUserToStarredAttributes(String requestUser, long requestTime, Set<String> starredBy, Set<AtlasStruct> starredDetailsList) {
1743+
//Check and update starredBy Attribute
1744+
if (!starredBy.contains(requestUser)){
1745+
starredBy.add(requestUser);
1746+
}
1747+
1748+
//Check and update starredDetailsList Attribute
1749+
boolean isStarredDetailsListUpdated = false;
1750+
for (AtlasStruct starredDetails : starredDetailsList) {
1751+
String assetStarredBy = (String) starredDetails.getAttribute(ATTR_ASSET_STARRED_BY);
1752+
if (assetStarredBy.equals(requestUser)) {
1753+
starredDetails.setAttribute(ATTR_ASSET_STARRED_AT, requestTime);
1754+
isStarredDetailsListUpdated = true;
1755+
break;
1756+
}
1757+
}
1758+
if (!isStarredDetailsListUpdated) {
1759+
AtlasStruct starredDetails = getStarredDetailsStruct(requestUser, requestTime);
1760+
starredDetailsList.add(starredDetails);
1761+
}
1762+
}
1763+
1764+
private void removeUserFromStarredAttributes(String requestUser, Set<String> starredBy, Set<AtlasStruct> starredDetailsList) {
1765+
//Check and update starredBy Attribute
1766+
if (starredBy.contains(requestUser)){
1767+
starredBy.remove(requestUser);
1768+
}
1769+
1770+
for (AtlasStruct starredDetails : starredDetailsList) {
1771+
String assetStarredBy = (String) starredDetails.getAttribute(ATTR_ASSET_STARRED_BY);
1772+
if (assetStarredBy.equals(requestUser)) {
1773+
starredDetailsList.remove(starredDetails);
1774+
break;
1775+
}
1776+
}
17671777
}
17681778

17691779
private AtlasStruct getStarredDetailsStruct(String assetStarredBy, long assetStarredAt) {
@@ -2065,11 +2075,11 @@ private void flushAutoUpdateAttributes(AtlasEntity entity, AtlasEntityType entit
20652075
}
20662076
}
20672077

2068-
for (String attrName : entityType.getAllAttributes().keySet()) {
2069-
if (ATTR_STARRED_BY.equals(attrName) || ATTR_STARRED_COUNT.equals(attrName) || ATTR_STARRED_DETAILS_LIST.equals(attrName)) {
2070-
flushAttributes.add(attrName);
2071-
}
2072-
}
2078+
// for (String attrName : entityType.getAllAttributes().keySet()) {
2079+
// if (ATTR_STARRED_BY.equals(attrName) || ATTR_STARRED_COUNT.equals(attrName) || ATTR_STARRED_DETAILS_LIST.equals(attrName)) {
2080+
// flushAttributes.add(attrName);
2081+
// }
2082+
// }
20732083

20742084
flushAttributes.forEach(entity::removeAttribute);
20752085
}

repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphMapper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3530,7 +3530,7 @@ public void classificationRefreshPropagation(String classificationId) throws Atl
35303530
LOG.info("{} entity vertices have classification with id {} attached", propagatedVerticesIds.size(), classificationId);
35313531

35323532
List<String> verticesIdsToAddClassification = new ArrayList<>();
3533-
List<String> propagatedVerticesIdWithoutEdge = entityRetriever.getImpactedVerticesIds(sourceEntityVertex , classificationId,
3533+
List<String> propagatedVerticesIdWithoutEdge = entityRetriever.getImpactedVerticesIdsClassificationAttached(sourceEntityVertex , classificationId,
35343534
CLASSIFICATION_PROPAGATION_EXCLUSION_MAP.get(propagationMode), verticesIdsToAddClassification);
35353535

35363536
LOG.info("To add classification with id {} to {} vertices", classificationId, verticesIdsToAddClassification.size());

repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphRetriever.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -616,10 +616,15 @@ public List<String> getImpactedVerticesIds(AtlasVertex entityVertex, String rela
616616
return ret;
617617
}
618618

619-
public List<String> getImpactedVerticesIds(AtlasVertex entityVertex, String classificationId, List<String> edgeLabelsToExclude, List<String> verticesWithoutClassification) {
619+
public List<String> getImpactedVerticesIdsClassificationAttached(AtlasVertex entityVertex, String classificationId, List<String> edgeLabelsToExclude, List<String> verticesWithoutClassification) {
620620
List<String> ret = new ArrayList<>();
621621

622-
traverseImpactedVerticesByLevel(entityVertex, null, classificationId, ret, edgeLabelsToExclude, verticesWithoutClassification);
622+
GraphHelper.getAllClassificationEdges(entityVertex).forEach(classificationEdge -> {
623+
AtlasVertex classificationVertex = classificationEdge.getInVertex();
624+
if (classificationVertex != null && classificationId.equals(classificationVertex.getIdForDisplay())) {
625+
traverseImpactedVerticesByLevel(entityVertex, null, classificationId, ret, edgeLabelsToExclude, verticesWithoutClassification);
626+
}
627+
});
623628

624629
return ret;
625630
}

repository/src/main/java/org/apache/atlas/tasks/AtlasTaskService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ public List<AtlasTask> createAtlasTasks(List<AtlasTask> tasks) throws AtlasBaseE
151151
if (isClassificationTaskType(taskType)) {
152152
String classificationName = task.getClassificationName();
153153
String entityGuid = task.getEntityGuid();
154-
String classificationId = resolveAndReturnClassificationId(classificationName, entityGuid);
154+
String classificationId = StringUtils.isEmpty(task.getClassificationId()) ? resolveAndReturnClassificationId(classificationName, entityGuid) : task.getClassificationId();
155155
if (StringUtils.isEmpty(classificationId)) {
156156
throw new AtlasBaseException(AtlasErrorCode.TASK_INVALID_PARAMETERS, task.toString());
157157
}

0 commit comments

Comments
 (0)