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

Aleksey Yeschenko commented on CASSANDRA-9189:
----------------------------------------------

Committed to trunk as {{6af82eddff9d2923ff5447120dac432bd0dadae4}} (w/out a 
CHANGES.txt entry). Thanks.

> DROP ROLE shouldn't cache information about non-existent roles
> --------------------------------------------------------------
>
>                 Key: CASSANDRA-9189
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-9189
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Sam Tunnicliffe
>            Assignee: Sam Tunnicliffe
>             Fix For: 3.x
>
>         Attachments: 9189.txt
>
>
> {{DropRoleStatement#checkAccess}} involves a check of the target role's 
> superuser status in order to ensure that only superusers can drop another  
> with su privileges.
> When used in conjunction with {{IF EXISTS}}, this causes a cache entry for a 
> non-existent role to be inserted into the roles cache as 
> {{Roles#hasSuperuserStatus}} goes via the cache. {{RolesCache}} is a map from 
> a single role to the set of roles of which it has transitively been granted 
> (basically a map of {{RoleResource}} -> {{Set<RoleResource>}}). So in this 
> case an empty set is cached for the role. 
> This can be problematic when the {{DROP ROLE IF EXISTS}} is followed by a 
> {{CREATE ROLE}} as until the cache entry expires any authorization request 
> for that role will use the cache to fetch the set of roles that need to be 
> included in the permission check. Finding an empty set, all authz checks will 
> result in failure. This pattern is particularly common in automated tests.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to