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

Aleksei Zotov commented on CASSANDRA-16404:
-------------------------------------------

[~blerer]

Thanks for checking the code!
{quote}I did not realized that the JMX interface for that part of the code tend 
to be nested within the implementation classes. So I would do the same despite 
what I said earlier.
{quote}
I've given it a try and realized that it causes cyclic inheritance:
{code:java}
public class RolesCache implements RolesCache.RolesCacheMBean
{
    ...

    public static interface RolesCacheMBean extends AuthCacheMBean
    {
    ...
    }
}
{code}
and it is not compiling.

Similar approach works for other caches because they have another structure:
{code:java}
public class SomeHolderClass
{
    ...

    public static class RolesCache implements SomeClass.RolesCacheMBean
    {
    ...
    }

    public static interface RolesCacheMBean extends AuthCacheMBean
    {
    ...
    }
}
{code}
I see the following potential ways to proceed:
 1. keep everything as is - that's what I'm inclined to.
 2. introduce "holder" classes (similarly like we have for other caches) - I do 
not like it because it will lead to many changes (that we try to prevent 
without a real need). Also such holder classes without additional logic look 
weird and make not much sense.
 3. having interface in the same file, but non-public, like:
{code:java}
public class RolesCache implements RolesCache.RolesCacheMBean
{
    ...
}

interface RolesCacheMBean extends AuthCacheMBean
{
...
}
{code}
also does not seem to be working because the interface definition should be 
public to be available from {{NodeProbe}}.

I see no other obvious ways to have it simple and working other than the 
current approach. Your suggestions will be much appreciated. Please, let me 
know your thoughts.

> Provide a nodetool way of invalidating auth caches
> --------------------------------------------------
>
>                 Key: CASSANDRA-16404
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-16404
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Feature/Authorization
>            Reporter: Sumanth Pasupuleti
>            Assignee: Aleksei Zotov
>            Priority: Normal
>             Fix For: 4.x
>
>          Time Spent: 50m
>  Remaining Estimate: 0h
>
> We currently have nodetool commands to invalidate certain caches like 
> KeyCache, RowCache and CounterCache. 
> Being able to invalidate auth caches as well can come in handy in situations 
> where, critical backend auth changes may need to be in effect right away for 
> all the connections, especially in configurations where cache validity is 
> chosen to be for a longer duration. An example can be that an authenticated 
> user "User1" is no longer authorized to access a table resource "table1" and 
> it is vital that this change is reflected right away, without having to wait 
> for cache expiry/refresh to trigger.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to