[1/2] ranger git commit: RANGER-2173: Optimize Trie constuction and Policy lookup

2018-09-26 Thread abhay
Repository: ranger
Updated Branches:
  refs/heads/ranger-0.7 dddcf0155 -> 4bdfbd68e


RANGER-2173: Optimize Trie constuction and Policy lookup


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

Branch: refs/heads/ranger-0.7
Commit: 6a6e955b3af41253b1a949e42f202e90875a4d06
Parents: dddcf01
Author: Abhay Kulkarni 
Authored: Tue Jul 31 16:30:47 2018 -0700
Committer: Abhay Kulkarni 
Committed: Wed Sep 26 20:20:48 2018 -0700

--
 .../ranger/plugin/util/RangerResourceTrie.java  | 539 ---
 agents-common/src/test/resources/log4j.xml  |  14 +
 2 files changed, 348 insertions(+), 205 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ranger/blob/6a6e955b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
--
diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
index 189a72b..a255566 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
@@ -21,6 +21,7 @@ package org.apache.ranger.plugin.util;
 
 
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyResource;
@@ -30,7 +31,7 @@ import 
org.apache.ranger.plugin.resourcematcher.RangerAbstractResourceMatcher;
 import org.apache.ranger.plugin.resourcematcher.RangerResourceMatcher;
 
 import java.util.ArrayList;
-import java.util.Collections;
+import java.util.Collection;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
@@ -38,14 +39,17 @@ import java.util.Map;
 
 public class RangerResourceTrie {
 private static final Log LOG = LogFactory.getLog(RangerResourceTrie.class);
+private static final Log PERF_TRIE_INIT_LOG = 
RangerPerfTracer.getPerfLogger("resourcetrie.init");
+private static final Log PERF_TRIE_OP_LOG = 
RangerPerfTracer.getPerfLogger("resourcetrie.op");
 
 private static final String DEFAULT_WILDCARD_CHARS = "*?";
 
-private final String   resourceName;
-private final boolean  optIgnoreCase;
-private final boolean  optWildcard;
-private final String   wildcardChars;
-private final TrieNode root;
+private final StringresourceName;
+private final boolean   optIgnoreCase;
+private final boolean   optWildcard;
+private final StringwildcardChars;
+private final TrieNode   root;
+private final Comparator comparator;
 
 public RangerResourceTrie(RangerServiceDef.RangerResourceDef resourceDef, 
List evaluators) {
 this(resourceDef, evaluators, null);
@@ -56,6 +60,12 @@ public class RangerResourceTrie {
 LOG.debug("==> RangerResourceTrie(" + resourceDef.getName() + ", 
evaluatorCount=" + evaluators.size() + ")");
 }
 
+RangerPerfTracer perf = null;
+
+if(RangerPerfTracer.isPerfTraceEnabled(PERF_TRIE_INIT_LOG)) {
+perf = RangerPerfTracer.getPerfTracer(PERF_TRIE_INIT_LOG, 
"RangerResourceTrie(name=" + resourceDef.getName() + ")");
+}
+
 Map matcherOptions = resourceDef.getMatcherOptions();
 
 boolean optReplaceTokens = 
RangerAbstractResourceMatcher.getOptionReplaceTokens(matcherOptions);
@@ -76,7 +86,8 @@ public class RangerResourceTrie {
 this.optIgnoreCase = 
RangerAbstractResourceMatcher.getOptionIgnoreCase(matcherOptions);
 this.optWildcard   = 
RangerAbstractResourceMatcher.getOptionWildCard(matcherOptions);
 this.wildcardChars = optWildcard ? DEFAULT_WILDCARD_CHARS + 
tokenReplaceSpecialChars : "" + tokenReplaceSpecialChars;
-this.root  = new TrieNode(Character.valueOf((char)0));
+this.root  = new TrieNode<>(null);
+this.comparator= comparator;
 
 for(T evaluator : evaluators) {
 Map policyResources = 
evaluator.getPolicyResource();
@@ -109,7 +120,15 @@ public class RangerResourceTrie {
 
 root.postSetup(null, comparator);
 
-LOG.info(toString());
+RangerPerfTracer.logAlways(perf);
+
+if (PERF_TRIE_INIT_LOG.isTraceEnabled()) {
+PERF_TRIE_INIT_LOG.trace(toString());
+
+StringBuilder sb = new StringBuilder();
+root.toString("", sb);
+PERF_TRIE_INIT_LOG.trace("Trie Dump:\n{" + sb.toString() 

[08/28] ranger git commit: RANGER-2173: Optimize Trie constuction and Policy lookup

2018-09-04 Thread mehul
RANGER-2173: Optimize Trie constuction and Policy lookup


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

Branch: refs/heads/ranger-1.1
Commit: 3598282745908ea1687693fb2359e71445972bf3
Parents: 1a35857
Author: Abhay Kulkarni 
Authored: Tue Jul 31 16:30:47 2018 -0700
Committer: Mehul Parikh 
Committed: Tue Sep 4 11:33:43 2018 +0530

--
 .../ranger/plugin/util/RangerResourceTrie.java  | 450 +++
 agents-common/src/test/resources/log4j.xml  |   4 +
 2 files changed, 267 insertions(+), 187 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ranger/blob/35982827/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
--
diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
index e7e8cf5..1723d14 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
@@ -21,6 +21,7 @@ package org.apache.ranger.plugin.util;
 
 
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyResource;
@@ -31,7 +32,6 @@ import 
org.apache.ranger.plugin.resourcematcher.RangerResourceMatcher;
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
@@ -39,14 +39,16 @@ import java.util.Map;
 
 public class RangerResourceTrie {
 private static final Log LOG = LogFactory.getLog(RangerResourceTrie.class);
+private static final Log PERF_TRIE_INIT_LOG = 
RangerPerfTracer.getPerfLogger("resourcetrie.init");
+private static final Log PERF_TRIE_OP_LOG = 
RangerPerfTracer.getPerfLogger("resourcetrie.op");
 
 private static final String DEFAULT_WILDCARD_CHARS = "*?";
 
-private final String   resourceName;
-private final boolean  optIgnoreCase;
-private final boolean  optWildcard;
-private final String   wildcardChars;
-private final TrieNode root;
+private final StringresourceName;
+private final boolean   optIgnoreCase;
+private final boolean   optWildcard;
+private final StringwildcardChars;
+private final TrieNode   root;
 private final Comparator comparator;
 
 public RangerResourceTrie(RangerServiceDef.RangerResourceDef resourceDef, 
List evaluators) {
@@ -58,6 +60,12 @@ public class RangerResourceTrie {
 LOG.debug("==> RangerResourceTrie(" + resourceDef.getName() + ", 
evaluatorCount=" + evaluators.size() + ")");
 }
 
+RangerPerfTracer perf = null;
+
+if(RangerPerfTracer.isPerfTraceEnabled(PERF_TRIE_INIT_LOG)) {
+perf = RangerPerfTracer.getPerfTracer(PERF_TRIE_INIT_LOG, 
"RangerResourceTrie(name=" + resourceDef.getName() + ")");
+}
+
 Map matcherOptions = resourceDef.getMatcherOptions();
 
 boolean optReplaceTokens = 
RangerAbstractResourceMatcher.getOptionReplaceTokens(matcherOptions);
@@ -78,7 +86,7 @@ public class RangerResourceTrie {
 this.optIgnoreCase = 
RangerAbstractResourceMatcher.getOptionIgnoreCase(matcherOptions);
 this.optWildcard   = 
RangerAbstractResourceMatcher.getOptionWildCard(matcherOptions);
 this.wildcardChars = optWildcard ? DEFAULT_WILDCARD_CHARS + 
tokenReplaceSpecialChars : "" + tokenReplaceSpecialChars;
-this.root  = new TrieNode(Character.valueOf((char)0));
+this.root  = new TrieNode<>(null);
 this.comparator= comparator;
 
 for(T evaluator : evaluators) {
@@ -112,7 +120,15 @@ public class RangerResourceTrie {
 
 root.postSetup(null, comparator);
 
-LOG.info(toString());
+RangerPerfTracer.logAlways(perf);
+
+if (PERF_TRIE_INIT_LOG.isTraceEnabled()) {
+PERF_TRIE_INIT_LOG.trace(toString());
+
+StringBuilder sb = new StringBuilder();
+root.toString("", sb);
+PERF_TRIE_INIT_LOG.trace("Trie Dump:\n{" + sb.toString() + "}");
+}
 
 if(LOG.isDebugEnabled()) {
 LOG.debug("<== RangerResourceTrie(" + resourceDef.getName() + ", 
evaluatorCount=" + evaluators.size() + "): " + toString());
@@ -140,7 +156,7 @@ public class RangerResourceTrie {
 return null;
 }
 

[14/28] ranger git commit: RANGER-2173: Optimize Trie constuction and Policy lookup - Part II

2018-09-04 Thread mehul
RANGER-2173: Optimize Trie constuction and Policy lookup
- Part II


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

Branch: refs/heads/ranger-1.1
Commit: 27f56df10c667b5f8de192d6acbc6968220afa57
Parents: c470225
Author: Abhay Kulkarni 
Authored: Sun Aug 5 09:01:24 2018 -0700
Committer: Mehul Parikh 
Committed: Tue Sep 4 11:38:30 2018 +0530

--
 .../org/apache/ranger/plugin/util/RangerResourceTrie.java | 10 +++---
 1 file changed, 7 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ranger/blob/27f56df1/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
--
diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
index 1723d14..10c6faa 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
@@ -122,9 +122,11 @@ public class RangerResourceTrie {
 
 RangerPerfTracer.logAlways(perf);
 
-if (PERF_TRIE_INIT_LOG.isTraceEnabled()) {
-PERF_TRIE_INIT_LOG.trace(toString());
+if (PERF_TRIE_INIT_LOG.isDebugEnabled()) {
+PERF_TRIE_INIT_LOG.debug(toString());
+}
 
+if (PERF_TRIE_INIT_LOG.isTraceEnabled()) {
 StringBuilder sb = new StringBuilder();
 root.toString("", sb);
 PERF_TRIE_INIT_LOG.trace("Trie Dump:\n{" + sb.toString() + "}");
@@ -442,7 +444,9 @@ public class RangerResourceTrie {
 final String childStr = child.getStr();
 final int childStrLen = childStr.length();
 
-if (!StringUtils.equals(childStr, str)) {
+final boolean isExactMatch = optIgnoreCase ? 
StringUtils.equalsIgnoreCase(childStr, str) : StringUtils.equals(childStr, str);
+
+if (!isExactMatch) {
 final int numOfCharactersToMatch = childStrLen < len ? 
childStrLen : len;
 int index = 1;
 for (; index < numOfCharactersToMatch; index++) {



[06/27] ranger git commit: RANGER-2173: Optimize Trie constuction and Policy lookup

2018-08-30 Thread mehul
RANGER-2173: Optimize Trie constuction and Policy lookup


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

Branch: refs/heads/ranger-1
Commit: 97f7b4da8acd1fa2e80fc67297e1ead1f0ea297f
Parents: cd42a61
Author: Abhay Kulkarni 
Authored: Tue Jul 31 16:30:47 2018 -0700
Committer: Mehul Parikh 
Committed: Wed Aug 29 14:18:32 2018 +0530

--
 .../ranger/plugin/util/RangerResourceTrie.java  | 450 +++
 agents-common/src/test/resources/log4j.xml  |   4 +
 2 files changed, 267 insertions(+), 187 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ranger/blob/97f7b4da/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
--
diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
index e7e8cf5..1723d14 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
@@ -21,6 +21,7 @@ package org.apache.ranger.plugin.util;
 
 
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyResource;
@@ -31,7 +32,6 @@ import 
org.apache.ranger.plugin.resourcematcher.RangerResourceMatcher;
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
@@ -39,14 +39,16 @@ import java.util.Map;
 
 public class RangerResourceTrie {
 private static final Log LOG = LogFactory.getLog(RangerResourceTrie.class);
+private static final Log PERF_TRIE_INIT_LOG = 
RangerPerfTracer.getPerfLogger("resourcetrie.init");
+private static final Log PERF_TRIE_OP_LOG = 
RangerPerfTracer.getPerfLogger("resourcetrie.op");
 
 private static final String DEFAULT_WILDCARD_CHARS = "*?";
 
-private final String   resourceName;
-private final boolean  optIgnoreCase;
-private final boolean  optWildcard;
-private final String   wildcardChars;
-private final TrieNode root;
+private final StringresourceName;
+private final boolean   optIgnoreCase;
+private final boolean   optWildcard;
+private final StringwildcardChars;
+private final TrieNode   root;
 private final Comparator comparator;
 
 public RangerResourceTrie(RangerServiceDef.RangerResourceDef resourceDef, 
List evaluators) {
@@ -58,6 +60,12 @@ public class RangerResourceTrie {
 LOG.debug("==> RangerResourceTrie(" + resourceDef.getName() + ", 
evaluatorCount=" + evaluators.size() + ")");
 }
 
+RangerPerfTracer perf = null;
+
+if(RangerPerfTracer.isPerfTraceEnabled(PERF_TRIE_INIT_LOG)) {
+perf = RangerPerfTracer.getPerfTracer(PERF_TRIE_INIT_LOG, 
"RangerResourceTrie(name=" + resourceDef.getName() + ")");
+}
+
 Map matcherOptions = resourceDef.getMatcherOptions();
 
 boolean optReplaceTokens = 
RangerAbstractResourceMatcher.getOptionReplaceTokens(matcherOptions);
@@ -78,7 +86,7 @@ public class RangerResourceTrie {
 this.optIgnoreCase = 
RangerAbstractResourceMatcher.getOptionIgnoreCase(matcherOptions);
 this.optWildcard   = 
RangerAbstractResourceMatcher.getOptionWildCard(matcherOptions);
 this.wildcardChars = optWildcard ? DEFAULT_WILDCARD_CHARS + 
tokenReplaceSpecialChars : "" + tokenReplaceSpecialChars;
-this.root  = new TrieNode(Character.valueOf((char)0));
+this.root  = new TrieNode<>(null);
 this.comparator= comparator;
 
 for(T evaluator : evaluators) {
@@ -112,7 +120,15 @@ public class RangerResourceTrie {
 
 root.postSetup(null, comparator);
 
-LOG.info(toString());
+RangerPerfTracer.logAlways(perf);
+
+if (PERF_TRIE_INIT_LOG.isTraceEnabled()) {
+PERF_TRIE_INIT_LOG.trace(toString());
+
+StringBuilder sb = new StringBuilder();
+root.toString("", sb);
+PERF_TRIE_INIT_LOG.trace("Trie Dump:\n{" + sb.toString() + "}");
+}
 
 if(LOG.isDebugEnabled()) {
 LOG.debug("<== RangerResourceTrie(" + resourceDef.getName() + ", 
evaluatorCount=" + evaluators.size() + "): " + toString());
@@ -140,7 +156,7 @@ public class RangerResourceTrie {
 return null;
 }
 
- 

[12/27] ranger git commit: RANGER-2173: Optimize Trie constuction and Policy lookup - Part II

2018-08-30 Thread mehul
RANGER-2173: Optimize Trie constuction and Policy lookup
- Part II


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

Branch: refs/heads/ranger-1
Commit: 425bb69a738dfb1bef8a24f304289e1acae50db5
Parents: 05fc503
Author: Abhay Kulkarni 
Authored: Sun Aug 5 09:01:24 2018 -0700
Committer: Mehul Parikh 
Committed: Wed Aug 29 14:23:30 2018 +0530

--
 .../org/apache/ranger/plugin/util/RangerResourceTrie.java | 10 +++---
 1 file changed, 7 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ranger/blob/425bb69a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
--
diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
index 1723d14..10c6faa 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
@@ -122,9 +122,11 @@ public class RangerResourceTrie {
 
 RangerPerfTracer.logAlways(perf);
 
-if (PERF_TRIE_INIT_LOG.isTraceEnabled()) {
-PERF_TRIE_INIT_LOG.trace(toString());
+if (PERF_TRIE_INIT_LOG.isDebugEnabled()) {
+PERF_TRIE_INIT_LOG.debug(toString());
+}
 
+if (PERF_TRIE_INIT_LOG.isTraceEnabled()) {
 StringBuilder sb = new StringBuilder();
 root.toString("", sb);
 PERF_TRIE_INIT_LOG.trace("Trie Dump:\n{" + sb.toString() + "}");
@@ -442,7 +444,9 @@ public class RangerResourceTrie {
 final String childStr = child.getStr();
 final int childStrLen = childStr.length();
 
-if (!StringUtils.equals(childStr, str)) {
+final boolean isExactMatch = optIgnoreCase ? 
StringUtils.equalsIgnoreCase(childStr, str) : StringUtils.equals(childStr, str);
+
+if (!isExactMatch) {
 final int numOfCharactersToMatch = childStrLen < len ? 
childStrLen : len;
 int index = 1;
 for (; index < numOfCharactersToMatch; index++) {



ranger git commit: RANGER-2173: Optimize Trie constuction and Policy lookup

2018-07-31 Thread abhay
Repository: ranger
Updated Branches:
  refs/heads/master 1d47302f9 -> ec711360a


RANGER-2173: Optimize Trie constuction and Policy lookup


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

Branch: refs/heads/master
Commit: ec711360ab0e84905476930b11e92641edf07d7a
Parents: 1d47302
Author: Abhay Kulkarni 
Authored: Tue Jul 31 16:30:47 2018 -0700
Committer: Abhay Kulkarni 
Committed: Tue Jul 31 16:30:47 2018 -0700

--
 .../ranger/plugin/util/RangerResourceTrie.java  | 450 +++
 agents-common/src/test/resources/log4j.xml  |   4 +
 2 files changed, 267 insertions(+), 187 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ranger/blob/ec711360/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
--
diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
index e7e8cf5..1723d14 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
@@ -21,6 +21,7 @@ package org.apache.ranger.plugin.util;
 
 
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyResource;
@@ -31,7 +32,6 @@ import 
org.apache.ranger.plugin.resourcematcher.RangerResourceMatcher;
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
@@ -39,14 +39,16 @@ import java.util.Map;
 
 public class RangerResourceTrie {
 private static final Log LOG = LogFactory.getLog(RangerResourceTrie.class);
+private static final Log PERF_TRIE_INIT_LOG = 
RangerPerfTracer.getPerfLogger("resourcetrie.init");
+private static final Log PERF_TRIE_OP_LOG = 
RangerPerfTracer.getPerfLogger("resourcetrie.op");
 
 private static final String DEFAULT_WILDCARD_CHARS = "*?";
 
-private final String   resourceName;
-private final boolean  optIgnoreCase;
-private final boolean  optWildcard;
-private final String   wildcardChars;
-private final TrieNode root;
+private final StringresourceName;
+private final boolean   optIgnoreCase;
+private final boolean   optWildcard;
+private final StringwildcardChars;
+private final TrieNode   root;
 private final Comparator comparator;
 
 public RangerResourceTrie(RangerServiceDef.RangerResourceDef resourceDef, 
List evaluators) {
@@ -58,6 +60,12 @@ public class RangerResourceTrie {
 LOG.debug("==> RangerResourceTrie(" + resourceDef.getName() + ", 
evaluatorCount=" + evaluators.size() + ")");
 }
 
+RangerPerfTracer perf = null;
+
+if(RangerPerfTracer.isPerfTraceEnabled(PERF_TRIE_INIT_LOG)) {
+perf = RangerPerfTracer.getPerfTracer(PERF_TRIE_INIT_LOG, 
"RangerResourceTrie(name=" + resourceDef.getName() + ")");
+}
+
 Map matcherOptions = resourceDef.getMatcherOptions();
 
 boolean optReplaceTokens = 
RangerAbstractResourceMatcher.getOptionReplaceTokens(matcherOptions);
@@ -78,7 +86,7 @@ public class RangerResourceTrie {
 this.optIgnoreCase = 
RangerAbstractResourceMatcher.getOptionIgnoreCase(matcherOptions);
 this.optWildcard   = 
RangerAbstractResourceMatcher.getOptionWildCard(matcherOptions);
 this.wildcardChars = optWildcard ? DEFAULT_WILDCARD_CHARS + 
tokenReplaceSpecialChars : "" + tokenReplaceSpecialChars;
-this.root  = new TrieNode(Character.valueOf((char)0));
+this.root  = new TrieNode<>(null);
 this.comparator= comparator;
 
 for(T evaluator : evaluators) {
@@ -112,7 +120,15 @@ public class RangerResourceTrie {
 
 root.postSetup(null, comparator);
 
-LOG.info(toString());
+RangerPerfTracer.logAlways(perf);
+
+if (PERF_TRIE_INIT_LOG.isTraceEnabled()) {
+PERF_TRIE_INIT_LOG.trace(toString());
+
+StringBuilder sb = new StringBuilder();
+root.toString("", sb);
+PERF_TRIE_INIT_LOG.trace("Trie Dump:\n{" + sb.toString() + "}");
+}
 
 if(LOG.isDebugEnabled()) {
 LOG.debug("<== RangerResourceTrie(" + resourceDef.getName() + ", 
evaluatorCount=" + evaluators.size() + "): " + toString());
@@