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 <[email protected]>
Authored: Fri May 27 13:39:51 2016 +0100
Committer: Colm O hEigeartaigh <[email protected]>
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;
        

Reply via email to