You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by ma...@apache.org on 2017/02/21 20:43:05 UTC

incubator-atlas git commit: ATLAS-1577: audit event generated for an entity overwrites previous event for the entity

Repository: incubator-atlas
Updated Branches:
  refs/heads/master 2fb3057b1 -> b4a694154


ATLAS-1577: audit event generated for an entity overwrites previous event for the entity


Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/b4a69415
Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/b4a69415
Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/b4a69415

Branch: refs/heads/master
Commit: b4a694154de8372b405ed3eca6f0254753e146e5
Parents: 2fb3057
Author: Madhan Neethiraj <ma...@apache.org>
Authored: Tue Feb 21 11:07:07 2017 -0800
Committer: Madhan Neethiraj <ma...@apache.org>
Committed: Tue Feb 21 11:32:21 2017 -0800

----------------------------------------------------------------------
 .../repository/audit/EntityAuditListener.java   | 27 ++++++++------------
 .../java/org/apache/atlas/RequestContext.java   |  6 +++++
 .../notification/NotificationHookConsumer.java  |  5 +++-
 .../apache/atlas/web/filters/AuditFilter.java   |  1 -
 4 files changed, 20 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b4a69415/repository/src/main/java/org/apache/atlas/repository/audit/EntityAuditListener.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/atlas/repository/audit/EntityAuditListener.java b/repository/src/main/java/org/apache/atlas/repository/audit/EntityAuditListener.java
index e4dcfca..01c077a 100644
--- a/repository/src/main/java/org/apache/atlas/repository/audit/EntityAuditListener.java
+++ b/repository/src/main/java/org/apache/atlas/repository/audit/EntityAuditListener.java
@@ -21,7 +21,7 @@ package org.apache.atlas.repository.audit;
 import org.apache.atlas.AtlasException;
 import org.apache.atlas.EntityAuditEvent;
 import org.apache.atlas.EntityAuditEvent.EntityAuditAction;
-import org.apache.atlas.RequestContext;
+import org.apache.atlas.RequestContextV1;
 import org.apache.atlas.listener.EntityChangeListener;
 import org.apache.atlas.typesystem.IReferenceableInstance;
 import org.apache.atlas.typesystem.IStruct;
@@ -57,10 +57,8 @@ public class EntityAuditListener implements EntityChangeListener {
     @Override
     public void onEntitiesAdded(Collection<ITypedReferenceableInstance> entities) throws AtlasException {
         List<EntityAuditEvent> events = new ArrayList<>();
-        long currentTime = RequestContext.get().getRequestTime();
-
         for (ITypedReferenceableInstance entity : entities) {
-            EntityAuditEvent event = createEvent(entity, currentTime, EntityAuditAction.ENTITY_CREATE);
+            EntityAuditEvent event = createEvent(entity, EntityAuditAction.ENTITY_CREATE);
             events.add(event);
         }
 
@@ -70,10 +68,8 @@ public class EntityAuditListener implements EntityChangeListener {
     @Override
     public void onEntitiesUpdated(Collection<ITypedReferenceableInstance> entities) throws AtlasException {
         List<EntityAuditEvent> events = new ArrayList<>();
-        long currentTime = RequestContext.get().getRequestTime();
-
         for (ITypedReferenceableInstance entity : entities) {
-            EntityAuditEvent event = createEvent(entity, currentTime, EntityAuditAction.ENTITY_UPDATE);
+            EntityAuditEvent event = createEvent(entity, EntityAuditAction.ENTITY_UPDATE);
             events.add(event);
         }
 
@@ -82,7 +78,7 @@ public class EntityAuditListener implements EntityChangeListener {
 
     @Override
     public void onTraitAdded(ITypedReferenceableInstance entity, IStruct trait) throws AtlasException {
-        EntityAuditEvent event = createEvent(entity, RequestContext.get().getRequestTime(), EntityAuditAction.TAG_ADD,
+        EntityAuditEvent event = createEvent(entity, EntityAuditAction.TAG_ADD,
                                              "Added trait: " + InstanceSerialization.toJson(trait, true));
 
         auditRepository.putEvents(event);
@@ -90,8 +86,7 @@ public class EntityAuditListener implements EntityChangeListener {
 
     @Override
     public void onTraitDeleted(ITypedReferenceableInstance entity, String traitName) throws AtlasException {
-        EntityAuditEvent event = createEvent(entity, RequestContext.get().getRequestTime(), EntityAuditAction.TAG_DELETE,
-                                             "Deleted trait: " + traitName);
+        EntityAuditEvent event = createEvent(entity, EntityAuditAction.TAG_DELETE, "Deleted trait: " + traitName);
 
         auditRepository.putEvents(event);
     }
@@ -99,10 +94,8 @@ public class EntityAuditListener implements EntityChangeListener {
     @Override
     public void onEntitiesDeleted(Collection<ITypedReferenceableInstance> entities) throws AtlasException {
         List<EntityAuditEvent> events = new ArrayList<>();
-        long currentTime = RequestContext.get().getRequestTime();
-
         for (ITypedReferenceableInstance entity : entities) {
-            EntityAuditEvent event = createEvent(entity, currentTime, EntityAuditAction.ENTITY_DELETE, "Deleted entity");
+            EntityAuditEvent event = createEvent(entity, EntityAuditAction.ENTITY_DELETE, "Deleted entity");
             events.add(event);
         }
 
@@ -113,16 +106,16 @@ public class EntityAuditListener implements EntityChangeListener {
         return auditRepository.listEvents(guid, null, (short) 10);
     }
 
-    private EntityAuditEvent createEvent(ITypedReferenceableInstance entity, long ts, EntityAuditAction action)
+    private EntityAuditEvent createEvent(ITypedReferenceableInstance entity, EntityAuditAction action)
             throws AtlasException {
         String detail = getAuditEventDetail(entity, action);
 
-        return createEvent(entity, ts, action, detail);
+        return createEvent(entity, action, detail);
     }
 
-    private EntityAuditEvent createEvent(ITypedReferenceableInstance entity, long ts, EntityAuditAction action, String details)
+    private EntityAuditEvent createEvent(ITypedReferenceableInstance entity, EntityAuditAction action, String details)
             throws AtlasException {
-        return new EntityAuditEvent(entity.getId()._getId(), ts, RequestContext.get().getUser(), action, details, entity);
+        return new EntityAuditEvent(entity.getId()._getId(), RequestContextV1.get().getRequestTime(), RequestContextV1.get().getUser(), action, details, entity);
     }
 
     private String getAuditEventDetail(ITypedReferenceableInstance entity, EntityAuditAction action) throws AtlasException {

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b4a69415/server-api/src/main/java/org/apache/atlas/RequestContext.java
----------------------------------------------------------------------
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 d35f456..bb11d67 100644
--- a/server-api/src/main/java/org/apache/atlas/RequestContext.java
+++ b/server-api/src/main/java/org/apache/atlas/RequestContext.java
@@ -64,6 +64,10 @@ public class RequestContext {
                 }
             }
         }
+
+        // ensure that RequestContextV1 is also initialized for this request
+        RequestContextV1.get();
+
         return CURRENT_CONTEXT.get();
     }
 
@@ -111,6 +115,8 @@ public class RequestContext {
 
     public void setUser(String user) {
         this.user = user;
+
+        RequestContextV1.get().setUser(user);
     }
 
     public void recordEntityCreate(Collection<String> createdEntityIds) {

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b4a69415/webapp/src/main/java/org/apache/atlas/notification/NotificationHookConsumer.java
----------------------------------------------------------------------
diff --git a/webapp/src/main/java/org/apache/atlas/notification/NotificationHookConsumer.java b/webapp/src/main/java/org/apache/atlas/notification/NotificationHookConsumer.java
index 44c7995..f030140 100644
--- a/webapp/src/main/java/org/apache/atlas/notification/NotificationHookConsumer.java
+++ b/webapp/src/main/java/org/apache/atlas/notification/NotificationHookConsumer.java
@@ -24,6 +24,7 @@ import kafka.consumer.ConsumerTimeoutException;
 import org.apache.atlas.ApplicationProperties;
 import org.apache.atlas.AtlasException;
 import org.apache.atlas.AtlasServiceException;
+import org.apache.atlas.RequestContext;
 import org.apache.atlas.RequestContextV1;
 import org.apache.atlas.ha.HAConfiguration;
 import org.apache.atlas.listener.ActiveStateChangeHandler;
@@ -249,7 +250,8 @@ public class NotificationHookConsumer implements Service, ActiveStateChangeHandl
                     LOG.debug("handleMessage({}): attempt {}", message.getType().name(), numRetries);
                 }
                 try {
-                    RequestContextV1.get().setUser(messageUser);
+                    RequestContext requestContext = RequestContext.createContext();
+                    requestContext.setUser(messageUser);
 
                     switch (message.getType()) {
                         case ENTITY_CREATE:
@@ -337,6 +339,7 @@ public class NotificationHookConsumer implements Service, ActiveStateChangeHandl
                         return;
                     }
                 } finally {
+                    RequestContext.clear();
                     RequestContextV1.clear();
                 }
             }

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/b4a69415/webapp/src/main/java/org/apache/atlas/web/filters/AuditFilter.java
----------------------------------------------------------------------
diff --git a/webapp/src/main/java/org/apache/atlas/web/filters/AuditFilter.java b/webapp/src/main/java/org/apache/atlas/web/filters/AuditFilter.java
index d804f21..525bbc0 100755
--- a/webapp/src/main/java/org/apache/atlas/web/filters/AuditFilter.java
+++ b/webapp/src/main/java/org/apache/atlas/web/filters/AuditFilter.java
@@ -74,7 +74,6 @@ public class AuditFilter implements Filter {
             currentThread.setName(formatName(oldName, requestId));
             RequestContext requestContext = RequestContext.createContext();
             requestContext.setUser(user);
-            RequestContextV1.get().setUser(user);
             recordAudit(httpRequest, requestTimeISO9601, user);
             filterChain.doFilter(request, response);
         } finally {