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/10/08 11:50:00 UTC

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

     [ https://issues.apache.org/jira/browse/SENTRY-2415?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Grzegorz Kokosinski updated SENTRY-2415:
----------------------------------------
    Attachment: SENTRY-2415.patch
        Status: Patch Available  (was: Open)

> 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
>            Priority: Trivial
>             Fix For: 1.5.1
>
>         Attachments: SENTRY-2415.patch
>
>
> 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)