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