[ 
https://issues.apache.org/jira/browse/RANGER-5148?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17927820#comment-17927820
 ] 

gooch commented on RANGER-5148:
-------------------------------

https://reviews.apache.org/r/75363/

> Redundant Role Cache Modification Triggers Caused by Role Version Changes in 
> Scenarios with a Large Number of Plugin Clients
> ----------------------------------------------------------------------------------------------------------------------------
>
>                 Key: RANGER-5148
>                 URL: https://issues.apache.org/jira/browse/RANGER-5148
>             Project: Ranger
>          Issue Type: Improvement
>          Components: admin
>    Affects Versions: 3.0.0
>            Reporter: gooch
>            Priority: Critical
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> This issue will occur when the number of Ranger plugin clients is 
> sufficiently large. When the server performs an update operation on roles, 
> which in turn causes the role version numbers in the database to be updated, 
> multiple clients will concurrently obtain the latest information of all 
> roles. During this process, the update of the cached roles in the Ranger 
> Admin Server is triggered multiple times. In a concurrent scenario, this 
> operation will generate a large number of unnecessary table-scanning updates. 
> The relevant code is located at
> {code:java}
> org.apache.ranger.common.RangerRoleCache.RangerRoleCacheWrapper#getLatestRangerRoles.
>  {code}
>  
> The problem lies in the fact that after lock.tryLock, the thread that 
> acquires the lock will definitely call the roleDBStore.getRoles method once. 
> In a concurrent scenario, the previous threads have already triggered the 
> update.
>  
> Specifically, I only made one modification to the role, and the role version 
> number increased by one. At this time, one thread holds the lock and is 
> performing a table-scanning update, while there are 10 new threads waiting to 
> compete for the lock. Subsequently, after each of these 10 threads acquires 
> the lock, they will update the cache again.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to