This is an automated email from the ASF dual-hosted git repository.

abhay pushed a commit to branch ranger-1
in repository https://gitbox.apache.org/repos/asf/ranger.git


The following commit(s) were added to refs/heads/ranger-1 by this push:
     new 12c9a2c  RANGER-2337: Context-Enrichers need to clean up completely 
when the policy-engine is destroyed
12c9a2c is described below

commit 12c9a2c8724c48803f72294ad53d9a266772dd6b
Author: Abhay Kulkarni <>
AuthorDate: Thu Feb 14 16:43:04 2019 -0800

    RANGER-2337: Context-Enrichers need to clean up completely when the 
policy-engine is destroyed
---
 .../RangerAbstractContextEnricher.java             | 37 +++++++++++++++++++++-
 .../plugin/contextenricher/RangerTagEnricher.java  |  2 ++
 .../ranger/plugin/service/RangerAuthContext.java   |  6 ++++
 3 files changed, 44 insertions(+), 1 deletion(-)

diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerAbstractContextEnricher.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerAbstractContextEnricher.java
index a745112..ddc6df2 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerAbstractContextEnricher.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerAbstractContextEnricher.java
@@ -30,6 +30,8 @@ import org.apache.commons.logging.LogFactory;
 import org.apache.ranger.plugin.model.RangerServiceDef;
 import 
org.apache.ranger.plugin.model.RangerServiceDef.RangerContextEnricherDef;
 import org.apache.ranger.plugin.policyengine.RangerAccessRequest;
+import org.apache.ranger.plugin.service.RangerAuthContext;
+import org.apache.ranger.plugin.service.RangerBasePlugin;
 
 
 public abstract class RangerAbstractContextEnricher implements 
RangerContextEnricher {
@@ -65,7 +67,14 @@ public abstract class RangerAbstractContextEnricher 
implements RangerContextEnri
                if(LOG.isDebugEnabled()) {
                        LOG.debug("==> RangerAbstractContextEnricher.init(" + 
enricherDef + ")");
                }
-
+               Map<String, RangerBasePlugin> servicePluginMap = 
RangerBasePlugin.getServicePluginMap();
+               RangerBasePlugin plugin = servicePluginMap != null ? 
servicePluginMap.get(getServiceName()) : null;
+               if (plugin != null) {
+                       RangerAuthContext currentAuthContext = 
plugin.getCurrentRangerAuthContext();
+                       if (currentAuthContext != null) {
+                               
currentAuthContext.addOrReplaceRequestContextEnricher(this, null);
+                       }
+               }
                if(LOG.isDebugEnabled()) {
                        LOG.debug("<== RangerAbstractContextEnricher.init(" + 
enricherDef + ")");
                }
@@ -78,11 +87,37 @@ public abstract class RangerAbstractContextEnricher 
implements RangerContextEnri
 
        @Override
        public boolean preCleanup() {
+               if(LOG.isDebugEnabled()) {
+                       LOG.debug("==> 
RangerAbstractContextEnricher.preCleanup(" + enricherDef + ")");
+               }
+               Map<String, RangerBasePlugin> servicePluginMap = 
RangerBasePlugin.getServicePluginMap();
+               RangerBasePlugin plugin = servicePluginMap != null ? 
servicePluginMap.get(getServiceName()) : null;
+               if (plugin != null) {
+                       RangerAuthContext currentAuthContext = 
plugin.getCurrentRangerAuthContext();
+                       if (currentAuthContext != null) {
+                               
currentAuthContext.cleanupRequestContextEnricher(this);
+                       }
+               }
+               if(LOG.isDebugEnabled()) {
+                       LOG.debug("<== 
RangerAbstractContextEnricher.preCleanup(" + enricherDef + ")");
+               }
+
                return true;
        }
 
        @Override
        public void cleanup() {
+               preCleanup();
+       }
+
+       @Override
+       protected void finalize() throws Throwable {
+               try {
+                       cleanup();
+               }
+               finally {
+                       super.finalize();
+               }
        }
 
        @Override
diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerTagEnricher.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerTagEnricher.java
index d671b73..2a0797c 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerTagEnricher.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerTagEnricher.java
@@ -314,6 +314,8 @@ public class RangerTagEnricher extends 
RangerAbstractContextEnricher {
        public boolean preCleanup() {
                boolean ret = true;
 
+               super.preCleanup();
+
                if (LOG.isDebugEnabled()) {
                        LOG.debug("==> RangerTagEnricher.preCleanup()");
                }
diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerAuthContext.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerAuthContext.java
index b898d29..b36a30f 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerAuthContext.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerAuthContext.java
@@ -81,6 +81,12 @@ public class RangerAuthContext implements RangerPolicyEngine 
{
         requestContextEnrichers.put(enricher, database);
     }
 
+    public void cleanupRequestContextEnricher(RangerContextEnricher enricher) {
+        if (requestContextEnrichers != null) {
+            requestContextEnrichers.remove(enricher);
+        }
+    }
+
     @Override
     public void setUseForwardedIPAddress(boolean useForwardedIPAddress) {
         policyEngine.setUseForwardedIPAddress(useForwardedIPAddress);

Reply via email to