Updated Branches: refs/heads/1.6.0-SNAPSHOT 7e95b3fa7 -> d4c9ee1c5
ACCUMULO-2012 Cloning accumulo.metadata works, accumulo.root will have a better error Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/d4c9ee1c Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/d4c9ee1c Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/d4c9ee1c Branch: refs/heads/1.6.0-SNAPSHOT Commit: d4c9ee1c529ebef80368d587db31e331d911953f Parents: 7e95b3f Author: John Vines <vi...@apache.org> Authored: Wed Jan 29 17:54:55 2014 -0500 Committer: John Vines <vi...@apache.org> Committed: Wed Jan 29 17:55:40 2014 -0500 ---------------------------------------------------------------------- .../apache/accumulo/server/util/MetadataTableUtil.java | 11 +++++++++-- .../org/apache/accumulo/master/FateServiceHandler.java | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/accumulo/blob/d4c9ee1c/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java ---------------------------------------------------------------------- diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java b/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java index bc80b9e..8b8a3d6 100644 --- a/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java +++ b/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java @@ -674,7 +674,10 @@ public class MetadataTableUtil { } private static Scanner createCloneScanner(String tableId, Connector conn) throws TableNotFoundException { - Scanner mscanner = new IsolatedScanner(conn.createScanner(MetadataTable.NAME, Authorizations.EMPTY)); + String tableName = MetadataTable.NAME; + if (tableId.equals(MetadataTable.ID)) + tableName = RootTable.NAME; + Scanner mscanner = new IsolatedScanner(conn.createScanner(tableName, Authorizations.EMPTY)); mscanner.setRange(new KeyExtent(new Text(tableId), null, null).toMetadataRange()); mscanner.fetchColumnFamily(DataFileColumnFamily.NAME); mscanner.fetchColumnFamily(TabletsSection.CurrentLocationColumnFamily.NAME); @@ -686,7 +689,11 @@ public class MetadataTableUtil { } static void initializeClone(String srcTableId, String tableId, Connector conn, BatchWriter bw) throws TableNotFoundException, MutationsRejectedException { - TabletIterator ti = new TabletIterator(createCloneScanner(srcTableId, conn), new KeyExtent(new Text(srcTableId), null, null).toMetadataRange(), true, true); + TabletIterator ti; + if (srcTableId.equals(MetadataTable.ID)) + ti = new TabletIterator(createCloneScanner(srcTableId, conn), new Range(), true, true); + else + ti = new TabletIterator(createCloneScanner(srcTableId, conn), new KeyExtent(new Text(srcTableId), null, null).toMetadataRange(), true, true); if (!ti.hasNext()) throw new RuntimeException(" table deleted during clone? srcTableId = " + srcTableId); http://git-wip-us.apache.org/repos/asf/accumulo/blob/d4c9ee1c/server/master/src/main/java/org/apache/accumulo/master/FateServiceHandler.java ---------------------------------------------------------------------- diff --git a/server/master/src/main/java/org/apache/accumulo/master/FateServiceHandler.java b/server/master/src/main/java/org/apache/accumulo/master/FateServiceHandler.java index afcda86..3a14ca2 100644 --- a/server/master/src/main/java/org/apache/accumulo/master/FateServiceHandler.java +++ b/server/master/src/main/java/org/apache/accumulo/master/FateServiceHandler.java @@ -170,7 +170,7 @@ class FateServiceHandler implements FateService.Iface { } case TABLE_CLONE: { TableOperation tableOp = TableOperation.CLONE; - String srcTableId = validateTableIdArgument(arguments.get(0), tableOp, null); + String srcTableId = validateTableIdArgument(arguments.get(0), tableOp, Tables.NOT_ROOT_ID); String tableName = validateTableNameArgument(arguments.get(1), tableOp, Tables.NOT_SYSTEM); if (!master.security.canCloneTable(c, srcTableId, tableName))