You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@sentry.apache.org by "Alexander Kolbasov (JIRA)" <ji...@apache.org> on 2016/11/29 09:06:58 UTC

[jira] [Commented] (SENTRY-1552) Granting partial role fails and doesn't report why

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

Alexander Kolbasov commented on SENTRY-1552:
--------------------------------------------

It failed here:

{code}
  private BitFieldAction getAction(String component, String name) {
    BitFieldActionFactory actionFactory = getActionFactory(component);
    BitFieldAction action = actionFactory.getActionByName(name);
    if (action == null) {
      throw new RuntimeException("Can not get BitFieldAction for name: " + name); // <-- Here
    }
    return action;
  }
{code}

This was called here:

{code}
  private void grantRolePartial(MSentryGMPrivilege grantPrivilege,
      MSentryRole role,PersistenceManager pm) {
    /**
     * If Grant is for ALL action and other actions belongs to ALL action already exists..
     * need to remove it and GRANT ALL action
     */
    String component = grantPrivilege.getComponentName();
    BitFieldAction action = getAction(component, grantPrivilege.getAction()); // <- Here
...
{code}

> Granting partial role fails and doesn't report why
> --------------------------------------------------
>
>                 Key: SENTRY-1552
>                 URL: https://issues.apache.org/jira/browse/SENTRY-1552
>             Project: Sentry
>          Issue Type: Bug
>            Reporter: Alexander Kolbasov
>
> I was trying to create a privilege using generic service protocol. The only things that were specified were component and service.
> The server threw exception:
> {code}
> 2016-11-29 00:58:28,773 (pool-7-thread-9) [ERROR - org.apache.sentry.provider.db.service.persistent.TransactionManager.executeTransactionWithRetry(TransactionManager.java:147)] The transaction has reached max retry number, will not retry again.
> java.lang.RuntimeException: Can not get BitFieldAction for name:
> 	at org.apache.sentry.provider.db.generic.service.persistent.PrivilegeOperatePersistence.getAction(PrivilegeOperatePersistence.java:439)
> 	at org.apache.sentry.provider.db.generic.service.persistent.PrivilegeOperatePersistence.grantRolePartial(PrivilegeOperatePersistence.java:107)
> 	at org.apache.sentry.provider.db.generic.service.persistent.PrivilegeOperatePersistence.grantPrivilege(PrivilegeOperatePersistence.java:97)
> 	at org.apache.sentry.provider.db.generic.service.persistent.DelegateSentryStore$2.execute(DelegateSentryStore.java:155)
> 	at org.apache.sentry.provider.db.service.persistent.TransactionManager.executeTransaction(TransactionManager.java:108)
> 	at org.apache.sentry.provider.db.service.persistent.TransactionManager.executeTransactionWithRetry(TransactionManager.java:138)
> 	at org.apache.sentry.provider.db.generic.service.persistent.DelegateSentryStore.alterRoleGrantPrivilege(DelegateSentryStore.java:142)
> 	at org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyProcessor$5.handle(SentryGenericPolicyProcessor.java:461)
> 	at org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyProcessor.requestHandle(SentryGenericPolicyProcessor.java:197)
> 	at org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyProcessor.alter_sentry_role_grant_privilege(SentryGenericPolicyProcessor.java:457)
> 	at org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyService$Processor$alter_sentry_role_grant_privilege.getResult(SentryGenericPolicyService.java:877)
> 	at org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyService$Processor$alter_sentry_role_grant_privilege.getResult(SentryGenericPolicyService.java:862)
> 	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
> 	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
> 	at org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyProcessorWrapper.process(SentryGenericPolicyProcessorWrapper.java:37)
> 	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:1142)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> 	at java.lang.Thread.run(Thread.java:745)
> 2016-11-29 00:58:28,774 (pool-7-thread-9) [ERROR - org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyProcessor.requestHandle(SentryGenericPolicyProcessor.java:220)] Unknown error:The transaction has reached max retry number, will not retry again.
> java.lang.Exception: The transaction has reached max retry number, will not retry again.
> 	at org.apache.sentry.provider.db.service.persistent.TransactionManager.executeTransactionWithRetry(TransactionManager.java:148)
> 	at org.apache.sentry.provider.db.generic.service.persistent.DelegateSentryStore.alterRoleGrantPrivilege(DelegateSentryStore.java:142)
> 	at org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyProcessor$5.handle(SentryGenericPolicyProcessor.java:461)
> 	at org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyProcessor.requestHandle(SentryGenericPolicyProcessor.java:197)
> 	at org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyProcessor.alter_sentry_role_grant_privilege(SentryGenericPolicyProcessor.java:457)
> 	at org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyService$Processor$alter_sentry_role_grant_privilege.getResult(SentryGenericPolicyService.java:877)
> 	at org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyService$Processor$alter_sentry_role_grant_privilege.getResult(SentryGenericPolicyService.java:862)
> 	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
> 	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
> 	at org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyProcessorWrapper.process(SentryGenericPolicyProcessorWrapper.java:37)
> 	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:1142)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> 	at java.lang.Thread.run(Thread.java:745)
> Caused by: java.lang.RuntimeException: Can not get BitFieldAction for name:
> 	at org.apache.sentry.provider.db.generic.service.persistent.PrivilegeOperatePersistence.getAction(PrivilegeOperatePersistence.java:439)
> 	at org.apache.sentry.provider.db.generic.service.persistent.PrivilegeOperatePersistence.grantRolePartial(PrivilegeOperatePersistence.java:107)
> 	at org.apache.sentry.provider.db.generic.service.persistent.PrivilegeOperatePersistence.grantPrivilege(PrivilegeOperatePersistence.java:97)
> 	at org.apache.sentry.provider.db.generic.service.persistent.DelegateSentryStore$2.execute(DelegateSentryStore.java:155)
> 	at org.apache.sentry.provider.db.service.persistent.TransactionManager.executeTransaction(TransactionManager.java:108)
> 	at org.apache.sentry.provider.db.service.persistent.TransactionManager.executeTransactionWithRetry(TransactionManager.java:138)
> 	... 14 more
> 2016-11-29 00:58:28,778 (pool-7-thread-9) [INFO - org.apache.sentry.provider.db.generic.service.thrift.SentryGenericPolicyProcessor.alter_sentry_role_grant_privilege(SentryGenericPolicyProcessor.java:475)] {"serviceName":"Sentry-Service","userName":"akolb","impersonator":"","ipAddress":"/127.0.0.1","operation":"GRANT_PRIVILEGE","eventTime":"1480409908778","operationText":"GRANT  ON TO ROLE r2","allowed":"false","objectType":"PRINCIPAL","component":"kafka"}
> {code}



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