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:04:34 UTC
[ranger] branch ranger-1.2 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.2
in repository https://gitbox.apache.org/repos/asf/ranger.git
The following commit(s) were added to refs/heads/ranger-1.2 by this push:
new 128f148 RANGER-2337: Context-Enrichers need to clean up completely when the policy-engine is destroyed
128f148 is described below
commit 128f1481ba7b058b2f2247d4a9b195b44faa7958
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);