[
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)