[
https://issues.apache.org/jira/browse/KAFKA-19782?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18030309#comment-18030309
]
Abhishek commented on KAFKA-19782:
----------------------------------
[~evkuvardin] can I take up this issue?
> Improve perfomance Authorizer.authorizeByResourceType by using Prefix Trie
> --------------------------------------------------------------------------
>
> Key: KAFKA-19782
> URL: https://issues.apache.org/jira/browse/KAFKA-19782
> Project: Kafka
> Issue Type: Improvement
> Components: clients
> Reporter: Evgeny Kuvardin
> Priority: Minor
>
> Class Authorizer.authorizeByResourceType under the hood uses HashMap for
> check if the caller is authorized to perform theĀ given ACL operation on at
> least one resource of the given type.
> It check each character in allowPatterns and pass to deny patterns
> {code:java}
> // For any literal allowed, if there's no dominant literal and prefix denied,
> return allow.
> // For any prefix allowed, if there's no dominant prefix denied,
> return allow.
> for (Map.Entry<PatternType, Set<String>> entry :
> allowPatterns.entrySet()) {
> for (String allowStr : entry.getValue()) {
> if (entry.getKey() == PatternType.LITERAL
> &&
> denyPatterns.get(PatternType.LITERAL).contains(allowStr))
> continue;
> StringBuilder sb = new StringBuilder();
> boolean hasDominatedDeny = false;
> for (char ch : allowStr.toCharArray()) {
> sb.append(ch);
> if
> (denyPatterns.get(PatternType.PREFIXED).contains(sb.toString())) {
> hasDominatedDeny = true;
> break;
> }
> }
> if (!hasDominatedDeny)
> return AuthorizationResult.ALLOWED;
> }
> }
> {code}
> To improve performance better use Prefix Tree
--
This message was sent by Atlassian Jira
(v8.20.10#820010)