You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ab...@apache.org on 2019/10/24 01:06:52 UTC

[ranger] branch master updated: RANGER-2630: Ensure that entity deletes are handled even when Atlas sets deleted entity's state as not ACTIVE

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 <ab...@apache.org>
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());