You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by ct...@apache.org on 2015/05/29 23:18:03 UTC
[2/8] accumulo git commit: ACCUMULO-3169 Handle table not found case
in clone
ACCUMULO-3169 Handle table not found case in clone
* Ensure that we can retrieve the namespaceId for the given srcTableId when we
construct a CloneTable fate operation.
* Throw an appropriate exception which propagates to the client when we can't.
Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/76c545bb
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/76c545bb
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/76c545bb
Branch: refs/heads/1.7
Commit: 76c545bb3bdb4c59963cc00417a663ab1ae046f1
Parents: 182fbce
Author: Christopher Tubbs <ct...@apache.org>
Authored: Fri May 29 17:01:40 2015 -0400
Committer: Christopher Tubbs <ct...@apache.org>
Committed: Fri May 29 17:09:01 2015 -0400
----------------------------------------------------------------------
.../apache/accumulo/master/tableOps/CloneTable.java | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/accumulo/blob/76c545bb/server/master/src/main/java/org/apache/accumulo/master/tableOps/CloneTable.java
----------------------------------------------------------------------
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/CloneTable.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/CloneTable.java
index da0afd8..b7e335f 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/CloneTable.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/CloneTable.java
@@ -231,7 +231,8 @@ public class CloneTable extends MasterRepo {
private static final long serialVersionUID = 1L;
private CloneInfo cloneInfo;
- public CloneTable(String user, String srcTableId, String tableName, Map<String,String> propertiesToSet, Set<String> propertiesToExclude) {
+ public CloneTable(String user, String srcTableId, String tableName, Map<String,String> propertiesToSet, Set<String> propertiesToExclude)
+ throws ThriftTableOperationException {
cloneInfo = new CloneInfo();
cloneInfo.user = user;
cloneInfo.srcTableId = srcTableId;
@@ -239,7 +240,15 @@ public class CloneTable extends MasterRepo {
cloneInfo.propertiesToExclude = propertiesToExclude;
cloneInfo.propertiesToSet = propertiesToSet;
Instance inst = HdfsZooInstance.getInstance();
- cloneInfo.srcNamespaceId = Tables.getNamespaceId(inst, cloneInfo.srcTableId);
+ try {
+ cloneInfo.srcNamespaceId = Tables.getNamespaceId(inst, cloneInfo.srcTableId);
+ } catch (IllegalArgumentException e) {
+ if (inst == null || cloneInfo.srcTableId == null) {
+ // just throw the exception if the illegal argument was thrown by the argument checker and not due to table non-existence
+ throw e;
+ }
+ throw new ThriftTableOperationException(cloneInfo.srcTableId, "", TableOperation.CLONE, TableOperationExceptionType.NOTFOUND, "Table does not exist");
+ }
}
@Override