You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by co...@apache.org on 2016/05/27 13:33:06 UTC

incubator-ranger git commit: RANGER-996 - The PolicyRefresher doesn't cache policies if the directory doesn't already exist

Repository: incubator-ranger
Updated Branches:
  refs/heads/master 6bdc2d27a -> c498b0fc1


RANGER-996 - The PolicyRefresher doesn't cache policies if the directory doesn't already exist

Committed by: coheigea. Reviewed by Madhan Neethiraj.


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

Branch: refs/heads/master
Commit: c498b0fc1cee00e89680b08869d2ec5afbce46fb
Parents: 6bdc2d2
Author: Colm O hEigeartaigh <co...@apache.org>
Authored: Fri May 27 13:39:51 2016 +0100
Committer: Colm O hEigeartaigh <co...@apache.org>
Committed: Fri May 27 14:32:28 2016 +0100

----------------------------------------------------------------------
 .../ranger/plugin/util/PolicyRefresher.java     | 26 ++++++++++++++++----
 1 file changed, 21 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c498b0fc/agents-common/src/main/java/org/apache/ranger/plugin/util/PolicyRefresher.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/util/PolicyRefresher.java b/agents-common/src/main/java/org/apache/ranger/plugin/util/PolicyRefresher.java
index 91a23b3..f865a2a 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/util/PolicyRefresher.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/util/PolicyRefresher.java
@@ -44,7 +44,8 @@ public class PolicyRefresher extends Thread {
 	private final String            serviceType;
 	private final String            serviceName;
 	private final RangerAdminClient rangerAdmin;
-	private final String            cacheFile;
+	private final String            cacheFileName;
+	private final String            cacheDir;
 	private final Gson              gson;
 
 	private long 	pollingIntervalMs   = 30 * 1000;
@@ -71,7 +72,8 @@ public class PolicyRefresher extends Thread {
 		cacheFilename = cacheFilename.replace(File.separatorChar,  '_');
 		cacheFilename = cacheFilename.replace(File.pathSeparatorChar,  '_');
 
-		this.cacheFile = cacheDir == null ? null : (cacheDir + File.separator + cacheFilename);
+		this.cacheFileName = cacheFilename;
+		this.cacheDir = cacheDir;
 
 		Gson gson = null;
 		try {
@@ -254,7 +256,7 @@ public class PolicyRefresher extends Thread {
 			LOG.debug("==> PolicyRefresher(serviceName=" + serviceName + ").loadFromCache()");
 		}
 
-		File cacheFile = StringUtils.isEmpty(this.cacheFile) ? null : new File(this.cacheFile);
+		File cacheFile = cacheDir == null ? null : new File(cacheDir + File.separator + cacheFileName);
 
     	if(cacheFile != null && cacheFile.isFile() && cacheFile.canRead()) {
     		Reader reader = null;
@@ -301,8 +303,22 @@ public class PolicyRefresher extends Thread {
 		}
 
 		if(policies != null) {
-	    	File cacheFile = StringUtils.isEmpty(this.cacheFile) ? null : new File(this.cacheFile);
-
+			File cacheFile = null;
+			if (cacheDir != null) {
+				// Create the cacheDir if it doesn't already exist
+				File cacheDirTmp = new File(cacheDir);
+				if (cacheDirTmp.exists()) {
+					cacheFile =  new File(cacheDir + File.separator + cacheFileName);
+				} else {
+					try {
+						cacheDirTmp.mkdirs();
+						cacheFile =  new File(cacheDir + File.separator + cacheFileName);
+					} catch (SecurityException ex) {
+						LOG.error("Cannot create cache directory", ex);
+					}
+				}
+			}
+			
 	    	if(cacheFile != null) {
 				Writer writer = null;