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/02/15 01:15:09 UTC

[ranger] branch ranger-1.1 updated: RANGER-2337: Context-Enrichers need to clean up completely when the policy-engine is destroyed

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

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


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

commit 228e1e75c38c0d21083e51b7f2696449fe9e3fa9
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);