You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@sentry.apache.org by "Grzegorz Kokosinski (JIRA)" <ji...@apache.org> on 2018/09/21 19:27:01 UTC

[jira] [Created] (SENTRY-2415) Suppress "SentryNoSuchObjectException: nonexistent group" exceptions from Sentry

Grzegorz Kokosinski created SENTRY-2415:
-------------------------------------------

             Summary: Suppress "SentryNoSuchObjectException: nonexistent group" exceptions from Sentry
                 Key: SENTRY-2415
                 URL: https://issues.apache.org/jira/browse/SENTRY-2415
             Project: Sentry
          Issue Type: Bug
          Components: Sentry
    Affects Versions: 1.5.1
            Reporter: Grzegorz Kokosinski
             Fix For: 1.5.1


We integrated Presto with Sentry authorization. 

During the execution when the object does not exists we get SentryNoSuchObjectException, and the meantime the whole stack exception is logged into a log file. It looks like this logging is not needed as exception is raised to the client and client can decide if they like to log it on their own or not.

Also I noticed that it is a general practice in Sentry project log and just after to re-throw the exception. This mostly pollute the log files and does not bring much value because exception is already thrown and can be caught and handled by client code.

{code}
2018-09-20T16:27:09.719-0400 ERROR Query-20180920_202709_00011_t5wat-671 org.apache.sentry.core.common.transport.RetryClientInvocationHandler failed to execute listRolesByGroupName
java.lang.reflect.InvocationTargetException
 at sun.reflect.GeneratedMethodAccessor548.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:498)
 at org.apache.sentry.core.common.transport.RetryClientInvocationHandler.invokeImpl(RetryClientInvocationHandler.java:95)
 at org.apache.sentry.core.common.transport.SentryClientInvocationHandler.invoke(SentryClientInvocationHandler.java:41)
 at com.sun.proxy.$Proxy167.listRolesByGroupName(Unknown Source)
 at com.facebook.presto.hive.security.sentry.NativeSentryEndpoint.lambda$listGroupRoles$2(NativeSentryEndpoint.java:107)
 at com.facebook.presto.hive.security.sentry.NativeSentryEndpoint.lambda$call$18(NativeSentryEndpoint.java:359)
 at java.security.AccessController.doPrivileged(Native Method)
 at javax.security.auth.Subject.doAs(Subject.java:360)
 at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1726)
 at com.facebook.presto.hive.security.SentrySecurityModule$1.call(SentrySecurityModule.java:156)
 at com.facebook.presto.hive.security.sentry.NativeSentryEndpoint.call(NativeSentryEndpoint.java:357)
 at com.facebook.presto.hive.security.sentry.NativeSentryEndpoint.listGroupRoles(NativeSentryEndpoint.java:105)
 at com.facebook.presto.hive.security.sentry.StatsCollectingSentryEndpoint.lambda$listGroupRoles$1(StatsCollectingSentryEndpoint.java:66)
 at com.facebook.presto.hive.security.sentry.InvocationStats.call(InvocationStats.java:34)
 at com.facebook.presto.hive.security.sentry.StatsCollectingSentryEndpoint.listGroupRoles(StatsCollectingSentryEndpoint.java:66)
 at com.google.common.cache.CacheLoader$FunctionToCacheLoader.load(CacheLoader.java:165)
 at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524)
 at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2273)
 at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2156)
 at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2046)
 at com.google.common.cache.LocalCache.get(LocalCache.java:3943)
 at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3967)
 at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4952)
 at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4958)
 at com.facebook.presto.hive.security.sentry.CachingSentryEndpoint.get(CachingSentryEndpoint.java:131)
 at com.facebook.presto.hive.security.sentry.CachingSentryEndpoint.listGroupRoles(CachingSentryEndpoint.java:97)
 at com.facebook.presto.hive.security.sentry.SentryClient.listGroupRoles(SentryClient.java:148)
 at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:267)
 at java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1553)
 at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
 at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
 at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
 at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
 at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
 at com.facebook.presto.hive.security.sentry.SentryClient.hasAccess(SentryClient.java:97)
 at com.facebook.presto.hive.security.sentry.SentryClient.lambda$hasAccess$0(SentryClient.java:86)
 at java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90)
 at java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
 at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
 at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498)
 at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
 at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
 at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)
 at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)
 at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
 at java.util.stream.ReferencePipeline.allMatch(ReferencePipeline.java:454)
 at com.facebook.presto.hive.security.sentry.SentryClient.hasAccess(SentryClient.java:86)
 at com.facebook.presto.hive.security.sentry.SentryAccessControl.checkCanSelectFromColumns(SentryAccessControl.java:166)
 at com.facebook.presto.hive.security.PartitionsAwareAccessControl.checkCanSelectFromColumns(PartitionsAwareAccessControl.java:124)
 at com.facebook.presto.security.AccessControlManager.lambda$checkCanSelectFromColumns$77(AccessControlManager.java:645)
 at com.facebook.presto.security.AccessControlManager.authorizationCheck(AccessControlManager.java:821)
 at com.facebook.presto.security.AccessControlManager.checkCanSelectFromColumns(AccessControlManager.java:645)
 at com.facebook.presto.sql.analyzer.Analyzer.lambda$analyze$0(Analyzer.java:78)
 at java.util.LinkedHashMap.forEach(LinkedHashMap.java:684)
 at com.facebook.presto.sql.analyzer.Analyzer.analyze(Analyzer.java:77)
 at com.facebook.presto.sql.analyzer.Analyzer.analyze(Analyzer.java:65)
 at com.facebook.presto.execution.SqlQueryExecution.<init>(SqlQueryExecution.java:169)
 at com.facebook.presto.execution.SqlQueryExecution$SqlQueryExecutionFactory.createQueryExecution(SqlQueryExecution.java:660)
 at com.facebook.presto.execution.SqlQueryExecution$SqlQueryExecutionFactory.createQueryExecution(SqlQueryExecution.java:582)
 at com.facebook.presto.execution.SqlQueryManager.createQueryInternal(SqlQueryManager.java:439)
 at com.facebook.presto.execution.SqlQueryManager.lambda$createQuery$3(SqlQueryManager.java:372)
 at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
 at java.util.concurrent.FutureTask.run(FutureTask.java:266)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
 at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.sentry.provider.db.SentryNoSuchObjectException: Role: TListSentryRolesRequest(protocol_version:2, requestorUserName:srcprestobthts, groupName:bdkfkadmt) couldn't be retrieved.. Server Stacktrace: org.apache.sentry.provider.db.SentryNoSuchObjectException: nonexistent group + bdkfkadmt
 at org.apache.sentry.provider.db.service.persistent.SentryStore.noSuchGroup(SentryStore.java:1961)
 at org.apache.sentry.provider.db.service.persistent.SentryStore.access$1400(SentryStore.java:89)
 at org.apache.sentry.provider.db.service.persistent.SentryStore$18.execute(SentryStore.java:1186)
 at org.apache.sentry.provider.db.service.persistent.SentryStore$18.execute(SentryStore.java:1175)
 at org.apache.sentry.provider.db.service.persistent.TransactionManager.executeTransaction(TransactionManager.java:111)
 at org.apache.sentry.provider.db.service.persistent.SentryStore.getMSentryRolesByGroupName(SentryStore.java:1174)
 at org.apache.sentry.provider.db.service.persistent.SentryStore.getTSentryRolesByGroupName(SentryStore.java:1210)
 at org.apache.sentry.provider.db.service.thrift.SentryPolicyStoreProcessor.list_sentry_roles_by_group(SentryPolicyStoreProcessor.java:555)
 at org.apache.sentry.provider.db.service.thrift.SentryPolicyService$Processor$list_sentry_roles_by_group.getResult(SentryPolicyService.java:1017)
 at org.apache.sentry.provider.db.service.thrift.SentryPolicyService$Processor$list_sentry_roles_by_group.getResult(SentryPolicyService.java:1002)
 at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
 at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
 at org.apache.sentry.provider.db.service.thrift.SentryProcessorWrapper.process(SentryProcessorWrapper.java:35)
 at org.apache.thrift.TMultiplexedProcessor.process(TMultiplexedProcessor.java:123)
 at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:286)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
 at java.lang.Thread.run(Thread.java:748)

at org.apache.sentry.service.thrift.Status.throwIfNotOk(Status.java:107)
 at org.apache.sentry.provider.db.service.thrift.SentryPolicyServiceClientDefaultImpl.listRolesByGroupName(SentryPolicyServiceClientDefaultImpl.java:161)
 ... 68 more
{code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)