accumulo-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Josh Elser (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (ACCUMULO-3135) RW concurrent test failed with table exist exception
Date Wed, 17 Sep 2014 22:17:34 GMT

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

Josh Elser commented on ACCUMULO-3135:
--------------------------------------

Guessing because I don't have the logs (maybe you can help me verify, [~kturner]). The gist
of it is as follows:

1. The clone table table operation seeds the CloneTable fate op, which then calls ClonePermissions
2. ClonePermissions ends up calling grantTablePermission

{code:title=SecurityOperation.java}
  public void grantTablePermission(TCredentials c, String user, String tableId, TablePermission
permission) throws ThriftSecurityException {
    if (!canGrantTable(c, user, tableId))
      throw new ThriftSecurityException(c.getPrincipal(), SecurityErrorCode.PERMISSION_DENIED);

    targetUserExists(user);

    try {
      permHandle.grantTablePermission(user, tableId, permission);
      log.info("Granted table permission " + permission + " for user " + user + " on the table
" + tableId + " at the request of user " + c.getPrincipal());
    } catch (AccumuloSecurityException e) {
      throw e.asThriftException();
    } catch (TableNotFoundException e) {
      throw new ThriftSecurityException(c.getPrincipal(), SecurityErrorCode.TABLE_DOESNT_EXIST);
    }
  }
{code}

If the table the grant is called for doesn't exist, it eats the {{TableNotFoundException}}
and throws a {{ThriftSecurityException}} with {{SecurityErrorCode.TABLE_DOESNT_EXIST}}. I'm
guessing that TableOperations should unwrap the {{ThriftSecurityException}} when it has the
{{TABLE_DOESNT_EXIST}} code and make a {{TableNotFoundException}} from it?

Going to dig into whether or not this was actually a change in implementation since 1.5.1
or earlier.

> RW concurrent test failed with table exist exception
> ----------------------------------------------------
>
>                 Key: ACCUMULO-3135
>                 URL: https://issues.apache.org/jira/browse/ACCUMULO-3135
>             Project: Accumulo
>          Issue Type: Bug
>         Environment: Running RW test against 1.5.2 RC1
>            Reporter: Keith Turner
>            Assignee: Keith Turner
>             Fix For: 1.5.2
>
>
> Saw the following error when running RW test against 1.5.2 RC1.  
> {noformat}
> 16 18:34:56,869 [server.Accumulo] INFO : Zookeeper connected and initialized, attemping
to talk to HDFS
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at org.apache.accumulo.start.Main$1.run(Main.java:107)
>         at java.lang.Thread.run(Thread.java:744)
> Caused by: java.lang.Exception: Error running node ct.CloneTable
>         at org.apache.accumulo.test.randomwalk.Module.visit(Module.java:285)
>         at org.apache.accumulo.test.randomwalk.Module.visit(Module.java:254)
>         ... 8 more
> Caused by: org.apache.accumulo.core.client.AccumuloSecurityException: Error TABLE_DOESNT_EXIST
for user root - Unknown security exception
>         at org.apache.accumulo.core.client.admin.TableOperationsImpl.doTableOperation(TableOperationsImpl.java:298)
>         at org.apache.accumulo.core.client.admin.TableOperationsImpl.doTableOperation(TableOperationsImpl.java:280)
>         at org.apache.accumulo.core.client.admin.TableOperationsImpl.clone(TableOperationsImpl.java:688)
>         at org.apache.accumulo.test.randomwalk.concurrent.CloneTable.visit(CloneTable.java:48)
>         at org.apache.accumulo.test.randomwalk.Module.visit(Module.java:254)
>         ... 9 more
> Caused by: ThriftSecurityException(user:root, code:TABLE_DOESNT_EXIST)
>         at org.apache.accumulo.core.master.thrift.MasterClientService$executeTableOperation_result$executeTableOperation_resultStandardScheme.read(MasterClientService.java:16120)
>         at org.apache.accumulo.core.master.thrift.MasterClientService$executeTableOperation_result$executeTableOperation_resultStandardScheme.read(MasterClientService.java:16106)
>         at org.apache.accumulo.core.master.thrift.MasterClientService$executeTableOperation_result.read(MasterClientService.java:16048)
>         at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78)
>         at org.apache.accumulo.core.master.thrift.MasterClientService$Client.recv_executeTableOperation(MasterClientService.java:499)
>         at org.apache.accumulo.core.master.thrift.MasterClientService$Client.executeTableOperation(MasterClientService.java:480)
>         at org.apache.accumulo.core.client.admin.TableOperationsImpl.executeTableOperation(TableOperationsImpl.java:236)
>         at org.apache.accumulo.core.client.admin.TableOperationsImpl.doTableOperation(TableOperationsImpl.java:289)
> {noformat}
> Looking at the test code, it specifically checks for {{TableNotFoundException}}, but
its getting a {{ThriftSecurityException(user:root, code:TABLE_DOESNT_EXIST)}}.  Need to figure
out if this is change in behavior since 1.5.1.



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

Mime
View raw message