This is an automated email from the ASF dual-hosted git repository.
abhay pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git
The following commit(s) were added to refs/heads/master by this push:
new 79b0c12 RANGER-2630: Ensure that entity deletes are handled even when
Atlas sets deleted entity's state as not ACTIVE
79b0c12 is described below
commit 79b0c121a607ba8653f7983ed52ddbe986533fd4
Author: Abhay Kulkarni <[email protected]>
AuthorDate: Wed Oct 23 18:06:40 2019 -0700
RANGER-2630: Ensure that entity deletes are handled even when Atlas sets
deleted entity's state as not ACTIVE
---
.../tagsync/source/atlas/AtlasNotificationMapper.java | 17 ++++++++++-------
.../tagsync/source/atlas/EntityNotificationWrapper.java | 4 ++--
2 files changed, 12 insertions(+), 9 deletions(-)
diff --git
a/tagsync/src/main/java/org/apache/ranger/tagsync/source/atlas/AtlasNotificationMapper.java
b/tagsync/src/main/java/org/apache/ranger/tagsync/source/atlas/AtlasNotificationMapper.java
index a4cab28..ed4ba17 100644
---
a/tagsync/src/main/java/org/apache/ranger/tagsync/source/atlas/AtlasNotificationMapper.java
+++
b/tagsync/src/main/java/org/apache/ranger/tagsync/source/atlas/AtlasNotificationMapper.java
@@ -46,8 +46,7 @@ public class AtlasNotificationMapper {
private static void
logUnhandledEntityNotification(EntityNotificationWrapper entityNotification) {
- boolean skipLogging = entityNotification.getIsEntityCreateOp() &&
entityNotification.getIsEmptyClassifications()
- || ! entityNotification.getIsEntityActive();
+ boolean skipLogging = entityNotification.getIsEntityCreateOp() &&
entityNotification.getIsEmptyClassifications();
if (!skipLogging) {
boolean loggingNeeded = false;
@@ -67,13 +66,15 @@ public class AtlasNotificationMapper {
}
if (loggingNeeded) {
- LOG.warn("Did not process entity notification for [" +
entityTypeName + "]");
+ if (!entityNotification.getIsEntityTypeHandled()) {
+ LOG.warn("Tag-sync is not enabled to handle notifications
for Entity-type:[" + entityNotification.getEntityTypeName() + "]");
+ }
+ LOG.warn("Dropped process entity notification for Atlas-Entity
[" + entityNotification.getRangerAtlasEntity() + "]");
}
}
}
- @SuppressWarnings("unchecked")
public static ServiceTags
processEntityNotification(EntityNotificationWrapper entityNotification) {
ServiceTags ret = null;
@@ -117,7 +118,7 @@ public class AtlasNotificationMapper {
if (opType != null) {
switch (opType) {
case ENTITY_CREATE:
- ret = ! entityNotification.getIsEmptyClassifications();
+ ret = entityNotification.getIsEntityActive() &&
!entityNotification.getIsEmptyClassifications();
if (!ret) {
if (LOG.isDebugEnabled()) {
LOG.debug("ENTITY_CREATE notification is ignored,
as there are no traits associated with the entity. Ranger will get necessary
information from any subsequent TRAIT_ADDED notification");
@@ -125,7 +126,7 @@ public class AtlasNotificationMapper {
}
break;
case ENTITY_UPDATE:
- ret = ! entityNotification.getIsEmptyClassifications();
+ ret = entityNotification.getIsEntityActive() &&
!entityNotification.getIsEmptyClassifications();
if (!ret) {
if (LOG.isDebugEnabled()) {
LOG.debug("ENTITY_UPDATE notification is ignored,
as there are no traits associated with the entity.");
@@ -133,10 +134,12 @@ public class AtlasNotificationMapper {
}
break;
case ENTITY_DELETE:
+ ret = true;
+ break;
case CLASSIFICATION_ADD:
case CLASSIFICATION_UPDATE:
case CLASSIFICATION_DELETE: {
- ret = true;
+ ret = entityNotification.getIsEntityActive();
break;
}
default:
diff --git
a/tagsync/src/main/java/org/apache/ranger/tagsync/source/atlas/EntityNotificationWrapper.java
b/tagsync/src/main/java/org/apache/ranger/tagsync/source/atlas/EntityNotificationWrapper.java
index 9781aa6..c2445fb 100644
---
a/tagsync/src/main/java/org/apache/ranger/tagsync/source/atlas/EntityNotificationWrapper.java
+++
b/tagsync/src/main/java/org/apache/ranger/tagsync/source/atlas/EntityNotificationWrapper.java
@@ -90,7 +90,7 @@ public class EntityNotificationWrapper {
rangerAtlasEntity = new RangerAtlasEntity(typeName, guid,
atlasEntity.getAttributes());
entityTypeName = atlasEntity.getTypeName();
isEntityActive = atlasEntity.getStatus() ==
AtlasEntity.Status.ACTIVE;
- isEntityTypeHandled = isEntityActive &&
AtlasResourceMapperUtil.isEntityTypeHandled(entityTypeName);
+ isEntityTypeHandled =
AtlasResourceMapperUtil.isEntityTypeHandled(entityTypeName);
isEntityDeleteOp =
EntityNotificationV2.OperationType.ENTITY_DELETE ==
v2Notification.getOperationType();
isEntityCreateOp =
EntityNotificationV2.OperationType.ENTITY_CREATE ==
v2Notification.getOperationType();
isEmptyClassifications =
CollectionUtils.isEmpty(atlasEntity.getClassifications());
@@ -163,7 +163,7 @@ public class EntityNotificationWrapper {
rangerAtlasEntity = new RangerAtlasEntity(typeName, guid,
atlasEntity.getValues());
entityTypeName = atlasEntity.getTypeName();
isEntityActive = atlasEntity.getId().getState() ==
Id.EntityState.ACTIVE;
- isEntityTypeHandled = isEntityActive &&
AtlasResourceMapperUtil.isEntityTypeHandled(entityTypeName);
+ isEntityTypeHandled =
AtlasResourceMapperUtil.isEntityTypeHandled(entityTypeName);
isEntityDeleteOp =
EntityNotificationV1.OperationType.ENTITY_DELETE ==
v1Notification.getOperationType();
isEntityCreateOp =
EntityNotificationV1.OperationType.ENTITY_CREATE ==
v1Notification.getOperationType();
isEmptyClassifications =
CollectionUtils.isEmpty(v1Notification.getAllTraits());