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

Reply via email to