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

Vishy Kasar commented on CASSANDRA-7894:
----------------------------------------

You are correct. This was due to read time out error on the authorization 
table. What is a good way to resolve this? These permissions do not change 
often. How can we cache them for longer so we do not have to look up often?

com.google.common.util.concurrent.UncheckedExecutionException: 
java.lang.RuntimeException: 
org.apache.cassandra.exceptions.ReadTimeoutException: Operation timed out - 
received only 0 responses.
        at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2258)
        at com.google.common.cache.LocalCache.get(LocalCache.java:3990)
        at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3994)
        at 
com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4878)
        at 
org.apache.cassandra.service.ClientState.authorize(ClientState.java:292)
        at 
org.apache.cassandra.service.ClientState.ensureHasPermission(ClientState.java:172)
        at 
org.apache.cassandra.service.ClientState.hasAccess(ClientState.java:165)
        at 
org.apache.cassandra.service.ClientState.hasColumnFamilyAccess(ClientState.java:149)
        at 
org.apache.cassandra.thrift.CassandraServer.createMutationList(CassandraServer.java:681)
        at 
org.apache.cassandra.thrift.CassandraServer.batch_mutate(CassandraServer.java:749)
        at 
org.apache.cassandra.thrift.Cassandra$Processor$batch_mutate.getResult(Cassandra.java:3690)
        at 
org.apache.cassandra.thrift.Cassandra$Processor$batch_mutate.getResult(Cassandra.java:3678)
        at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:32)
        at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:34)
        at 
org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:206)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
        at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.RuntimeException: 
org.apache.cassandra.exceptions.ReadTimeoutException: Operation timed out - 
received only 0 responses.
        at org.apache.cassandra.auth.Auth.selectUser(Auth.java:256)
        at org.apache.cassandra.auth.Auth.isSuperuser(Auth.java:84)
        at 
org.apache.cassandra.auth.AuthenticatedUser.isSuper(AuthenticatedUser.java:50)
        at 
org.apache.cassandra.auth.CassandraAuthorizer.authorize(CassandraAuthorizer.java:68)
        at org.apache.cassandra.service.ClientState$1.load(ClientState.java:278)
        at org.apache.cassandra.service.ClientState$1.load(ClientState.java:275)
        at 
com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3589)
        at 
com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2374)
        at 
com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2337)
        at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2252)
        at com.google.common.cache.LocalCache.get(LocalCache.java:3990)
        at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3994)
        at 
com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4878)
        at 
org.apache.cassandra.service.ClientState.authorize(ClientState.java:292)
        at 
org.apache.cassandra.service.ClientState.ensureHasPermission(ClientState.java:172)
        at 
org.apache.cassandra.service.ClientState.hasAccess(ClientState.java:165)
        at 
org.apache.cassandra.service.ClientState.hasColumnFamilyAccess(ClientState.java:149)
        at 
org.apache.cassandra.thrift.CassandraServer.get_slice(CassandraServer.java:315)
        at 
org.apache.cassandra.thrift.Cassandra$Processor$get_slice.getResult(Cassandra.java:3425)
        at 
org.apache.cassandra.thrift.Cassandra$Processor$get_slice.getResult(Cassandra.java:3413)
        ... 6 more
Caused by: org.apache.cassandra.exceptions.ReadTimeoutException: Operation 
timed out - received only 0 responses.
        at org.apache.cassandra.service.ReadCallback.get(ReadCallback.java:105)
        at 
org.apache.cassandra.service.StorageProxy.fetchRows(StorageProxy.java:943)
        at org.apache.cassandra.service.StorageProxy.read(StorageProxy.java:828)
        at 
org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:140)
        at org.apache.cassandra.auth.Auth.selectUser(Auth.java:245)
        ... 25 more


> Authorization fails occasionally even when user has permission
> --------------------------------------------------------------
>
>                 Key: CASSANDRA-7894
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-7894
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Vishy Kasar
>
> Production cluster uses org.apache.cassandra.auth.PasswordAuthenticator and 
> org.apache.cassandra.auth.CassandraAuthorizer. The user has SELECT and MODIFY 
> permissions. 
> cqlsh> list ALL ON ALL KEYSPACES;
>           x_cassandra_user | <all keyspaces> |     SELECT
>           x_cassandra_user | <all keyspaces> |     MODIFY
> Millions of requests from user go through fine. A very small percentage fail 
> with following message sent back to hector client.
> Caused by: me.prettyprint.hector.api.exceptions.HInvalidRequestException: 
> InvalidRequestException(why:User x_cassandra_user has no SELECT permission on 
> <table ks.cf> or any of its parents)
> Any ideas now why this fails? 



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

Reply via email to