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;
