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 Thu, 18 Sep 2014 01:22:34 GMT

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

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

Exact details on how to reproduce this.

{code:title=Master.java}
        case RENAME: {
          String oldTableName = ByteBufferUtil.toString(arguments.get(0));
          String newTableName = ByteBufferUtil.toString(arguments.get(1));
          
          String tableId = checkTableId(oldTableName, TableOperation.RENAME);
          checkNotMetadataTable(oldTableName, TableOperation.RENAME);
          checkNotMetadataTable(newTableName, TableOperation.RENAME);
          checkTableName(newTableName, TableOperation.RENAME);
          //
          // AccumuloSecurityException thrown by canRenamedTable if oldTable is deleted here
          //
          if (!security.canRenameTable(c, tableId))
            throw new ThriftSecurityException(c.getPrincipal(), SecurityErrorCode.PERMISSION_DENIED);
          
          fate.seedTransaction(opid, new TraceRepo<Master>(new RenameTable(tableId,
oldTableName, newTableName)), autoCleanup);
          
          break;
{code}

I think the correct thing to do would be to catch the ThriftSecurityException and change it
to a ThriftTableOperationException in the case where the table no longer exists. We wouldn't
have to change the client impl then. The translation would happen in the Master before the
RPC returns.

> 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