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

Reply via email to