http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCancelCompaction.java ---------------------------------------------------------------------- diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCancelCompaction.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCancelCompaction.java index 6ac60b7..adb8039 100644 --- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCancelCompaction.java +++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCancelCompaction.java @@ -16,15 +16,17 @@ */ package org.apache.accumulo.master.tableOps; +import org.apache.accumulo.core.client.impl.Namespace; +import org.apache.accumulo.core.client.impl.Table; import org.apache.accumulo.fate.Repo; import org.apache.accumulo.master.Master; class FinishCancelCompaction extends MasterRepo { private static final long serialVersionUID = 1L; - private String tableId; - private String namespaceId; + private Table.ID tableId; + private Namespace.ID namespaceId; - public FinishCancelCompaction(String namespaceId, String tableId) { + public FinishCancelCompaction(Namespace.ID namespaceId, Table.ID tableId) { this.tableId = tableId; this.namespaceId = namespaceId; }
http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCreateNamespace.java ---------------------------------------------------------------------- diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCreateNamespace.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCreateNamespace.java index fc47c1e..6663892 100644 --- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCreateNamespace.java +++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCreateNamespace.java @@ -49,7 +49,7 @@ class FinishCreateNamespace extends MasterRepo { @Override public String getReturn() { - return namespaceInfo.namespaceId; + return namespaceInfo.namespaceId.canonicalID(); } @Override http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCreateTable.java ---------------------------------------------------------------------- diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCreateTable.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCreateTable.java index fd7389a..6fd1305 100644 --- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCreateTable.java +++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCreateTable.java @@ -53,7 +53,7 @@ class FinishCreateTable extends MasterRepo { @Override public String getReturn() { - return tableInfo.tableId; + return tableInfo.tableId.canonicalID(); } @Override http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishImportTable.java ---------------------------------------------------------------------- diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishImportTable.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishImportTable.java index e27b768..4768757 100644 --- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishImportTable.java +++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishImportTable.java @@ -59,7 +59,7 @@ class FinishImportTable extends MasterRepo { @Override public String getReturn() { - return tableInfo.tableId; + return tableInfo.tableId.canonicalID(); } @Override http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/master/src/main/java/org/apache/accumulo/master/tableOps/ImportPopulateZookeeper.java ---------------------------------------------------------------------- diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/ImportPopulateZookeeper.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/ImportPopulateZookeeper.java index e76dd09..329d495 100644 --- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/ImportPopulateZookeeper.java +++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/ImportPopulateZookeeper.java @@ -23,6 +23,7 @@ import java.util.Map.Entry; import org.apache.accumulo.core.Constants; import org.apache.accumulo.core.client.Instance; import org.apache.accumulo.core.client.impl.AcceptableThriftTableOperationException; +import org.apache.accumulo.core.client.impl.Namespace; import org.apache.accumulo.core.client.impl.Namespaces; import org.apache.accumulo.core.client.impl.TableOperationsImpl; import org.apache.accumulo.core.client.impl.Tables; @@ -60,8 +61,8 @@ class ImportPopulateZookeeper extends MasterRepo { FileSystem ns = fs.getVolumeByPath(path).getFileSystem(); return TableOperationsImpl.getExportedProps(ns, path); } catch (IOException ioe) { - throw new AcceptableThriftTableOperationException(tableInfo.tableId, tableInfo.tableName, TableOperation.IMPORT, TableOperationExceptionType.OTHER, - "Error reading table props from " + path + " " + ioe.getMessage()); + throw new AcceptableThriftTableOperationException(tableInfo.tableId.canonicalID(), tableInfo.tableName, TableOperation.IMPORT, + TableOperationExceptionType.OTHER, "Error reading table props from " + path + " " + ioe.getMessage()); } } @@ -77,7 +78,7 @@ class ImportPopulateZookeeper extends MasterRepo { Utils.checkTableDoesNotExist(instance, tableInfo.tableName, tableInfo.tableId, TableOperation.CREATE); String namespace = Tables.qualify(tableInfo.tableName).getFirst(); - String namespaceId = Namespaces.getNamespaceId(instance, namespace); + Namespace.ID namespaceId = Namespaces.getNamespaceId(instance, namespace); TableManager.getInstance().addTable(tableInfo.tableId, namespaceId, tableInfo.tableName, NodeExistsPolicy.OVERWRITE); Tables.clearCache(instance); @@ -87,8 +88,8 @@ class ImportPopulateZookeeper extends MasterRepo { for (Entry<String,String> entry : getExportedProps(env.getFileSystem()).entrySet()) if (!TablePropUtil.setTableProperty(tableInfo.tableId, entry.getKey(), entry.getValue())) { - throw new AcceptableThriftTableOperationException(tableInfo.tableId, tableInfo.tableName, TableOperation.IMPORT, TableOperationExceptionType.OTHER, - "Invalid table property " + entry.getKey()); + throw new AcceptableThriftTableOperationException(tableInfo.tableId.canonicalID(), tableInfo.tableName, TableOperation.IMPORT, + TableOperationExceptionType.OTHER, "Invalid table property " + entry.getKey()); } return new CreateImportDir(tableInfo); http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/master/src/main/java/org/apache/accumulo/master/tableOps/ImportTable.java ---------------------------------------------------------------------- diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/ImportTable.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/ImportTable.java index b9b5327..4c64f08 100644 --- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/ImportTable.java +++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/ImportTable.java @@ -27,6 +27,8 @@ import java.util.zip.ZipInputStream; import org.apache.accumulo.core.Constants; import org.apache.accumulo.core.client.Instance; import org.apache.accumulo.core.client.impl.AcceptableThriftTableOperationException; +import org.apache.accumulo.core.client.impl.Namespace; +import org.apache.accumulo.core.client.impl.Table; import org.apache.accumulo.core.client.impl.thrift.TableOperation; import org.apache.accumulo.core.client.impl.thrift.TableOperationExceptionType; import org.apache.accumulo.fate.Repo; @@ -43,7 +45,7 @@ public class ImportTable extends MasterRepo { private ImportedTableInfo tableInfo; - public ImportTable(String user, String tableName, String exportDir, String namespaceId) { + public ImportTable(String user, String tableName, String exportDir, Namespace.ID namespaceId) { tableInfo = new ImportedTableInfo(); tableInfo.tableName = tableName; tableInfo.user = user; @@ -70,7 +72,7 @@ public class ImportTable extends MasterRepo { Utils.idLock.lock(); try { Instance instance = env.getInstance(); - tableInfo.tableId = Utils.getNextTableId(tableInfo.tableName, instance); + tableInfo.tableId = Utils.getNextTableId(tableInfo.tableName, instance, Table.ID.class); return new ImportSetupPermissions(tableInfo); } finally { Utils.idLock.unlock(); http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/master/src/main/java/org/apache/accumulo/master/tableOps/ImportedTableInfo.java ---------------------------------------------------------------------- diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/ImportedTableInfo.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/ImportedTableInfo.java index 7c09eb1..5378cc4 100644 --- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/ImportedTableInfo.java +++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/ImportedTableInfo.java @@ -16,6 +16,9 @@ */ package org.apache.accumulo.master.tableOps; +import org.apache.accumulo.core.client.impl.Namespace; +import org.apache.accumulo.core.client.impl.Table; + import java.io.Serializable; class ImportedTableInfo implements Serializable { @@ -25,7 +28,7 @@ class ImportedTableInfo implements Serializable { public String exportDir; public String user; public String tableName; - public String tableId; + public Table.ID tableId; public String importDir; - public String namespaceId; + public Namespace.ID namespaceId; } http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/master/src/main/java/org/apache/accumulo/master/tableOps/LoadFiles.java ---------------------------------------------------------------------- diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/LoadFiles.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/LoadFiles.java index 8ed7451..f84ca96 100644 --- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/LoadFiles.java +++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/LoadFiles.java @@ -36,6 +36,7 @@ import java.util.concurrent.TimeUnit; import java.util.regex.Pattern; import org.apache.accumulo.core.client.impl.AcceptableThriftTableOperationException; +import org.apache.accumulo.core.client.impl.Table; import org.apache.accumulo.core.client.impl.thrift.ClientService; import org.apache.accumulo.core.client.impl.thrift.TableOperation; import org.apache.accumulo.core.client.impl.thrift.TableOperationExceptionType; @@ -65,13 +66,13 @@ class LoadFiles extends MasterRepo { private static ExecutorService threadPool = null; private static final Logger log = LoggerFactory.getLogger(LoadFiles.class); - private String tableId; + private Table.ID tableId; private String source; private String bulk; private String errorDir; private boolean setTime; - public LoadFiles(String tableId, String source, String bulk, String errorDir, boolean setTime) { + public LoadFiles(Table.ID tableId, String source, String bulk, String errorDir, boolean setTime) { this.tableId = tableId; this.source = source; this.bulk = bulk; @@ -113,8 +114,8 @@ class LoadFiles extends MasterRepo { // Maybe this is a re-try... clear the flag and try again fs.delete(writable); if (!fs.createNewFile(writable)) - throw new AcceptableThriftTableOperationException(tableId, null, TableOperation.BULK_IMPORT, TableOperationExceptionType.BULK_BAD_ERROR_DIRECTORY, - "Unable to write to " + this.errorDir); + throw new AcceptableThriftTableOperationException(tableId.canonicalID(), null, TableOperation.BULK_IMPORT, + TableOperationExceptionType.BULK_BAD_ERROR_DIRECTORY, "Unable to write to " + this.errorDir); } fs.delete(writable); @@ -171,7 +172,7 @@ class LoadFiles extends MasterRepo { client = ThriftUtil.getTServerClient(server, master, timeInMillis); List<String> attempt = Collections.singletonList(file); log.debug("Asking " + server + " to bulk import " + file); - List<String> fail = client.bulkImportFiles(Tracer.traceInfo(), master.rpcCreds(), tid, tableId, attempt, errorDir, setTime); + List<String> fail = client.bulkImportFiles(Tracer.traceInfo(), master.rpcCreds(), tid, tableId.canonicalID(), attempt, errorDir, setTime); if (fail.isEmpty()) { loaded.add(file); } else { http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/master/src/main/java/org/apache/accumulo/master/tableOps/MapImportFileNames.java ---------------------------------------------------------------------- diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/MapImportFileNames.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/MapImportFileNames.java index 06bd86a..eec411d 100644 --- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/MapImportFileNames.java +++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/MapImportFileNames.java @@ -95,8 +95,8 @@ class MapImportFileNames extends MasterRepo { return new PopulateMetadataTable(tableInfo); } catch (IOException ioe) { log.warn("{}", ioe.getMessage(), ioe); - throw new AcceptableThriftTableOperationException(tableInfo.tableId, tableInfo.tableName, TableOperation.IMPORT, TableOperationExceptionType.OTHER, - "Error writing mapping file " + path + " " + ioe.getMessage()); + throw new AcceptableThriftTableOperationException(tableInfo.tableId.canonicalID(), tableInfo.tableName, TableOperation.IMPORT, + TableOperationExceptionType.OTHER, "Error writing mapping file " + path + " " + ioe.getMessage()); } finally { if (mappingsWriter != null) try { http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/master/src/main/java/org/apache/accumulo/master/tableOps/MoveExportedFiles.java ---------------------------------------------------------------------- diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/MoveExportedFiles.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/MoveExportedFiles.java index d6eb7be..a802dcf 100644 --- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/MoveExportedFiles.java +++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/MoveExportedFiles.java @@ -50,8 +50,8 @@ class MoveExportedFiles extends MasterRepo { for (String oldFileName : fileNameMappings.keySet()) { if (!fs.exists(new Path(tableInfo.exportDir, oldFileName))) { - throw new AcceptableThriftTableOperationException(tableInfo.tableId, tableInfo.tableName, TableOperation.IMPORT, TableOperationExceptionType.OTHER, - "File referenced by exported table does not exists " + oldFileName); + throw new AcceptableThriftTableOperationException(tableInfo.tableId.canonicalID(), tableInfo.tableName, TableOperation.IMPORT, + TableOperationExceptionType.OTHER, "File referenced by exported table does not exists " + oldFileName); } } @@ -67,8 +67,8 @@ class MoveExportedFiles extends MasterRepo { return new FinishImportTable(tableInfo); } catch (IOException ioe) { log.warn("{}", ioe.getMessage(), ioe); - throw new AcceptableThriftTableOperationException(tableInfo.tableId, tableInfo.tableName, TableOperation.IMPORT, TableOperationExceptionType.OTHER, - "Error renaming files " + ioe.getMessage()); + throw new AcceptableThriftTableOperationException(tableInfo.tableId.canonicalID(), tableInfo.tableName, TableOperation.IMPORT, + TableOperationExceptionType.OTHER, "Error renaming files " + ioe.getMessage()); } } } http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/master/src/main/java/org/apache/accumulo/master/tableOps/NamespaceCleanUp.java ---------------------------------------------------------------------- diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/NamespaceCleanUp.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/NamespaceCleanUp.java index 2444374..eebaeaf 100644 --- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/NamespaceCleanUp.java +++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/NamespaceCleanUp.java @@ -16,6 +16,7 @@ */ package org.apache.accumulo.master.tableOps; +import org.apache.accumulo.core.client.impl.Namespace; import org.apache.accumulo.core.client.impl.Tables; import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException; import org.apache.accumulo.fate.Repo; @@ -31,9 +32,9 @@ class NamespaceCleanUp extends MasterRepo { private static final long serialVersionUID = 1L; - private String namespaceId; + private Namespace.ID namespaceId; - public NamespaceCleanUp(String namespaceId) { + public NamespaceCleanUp(Namespace.ID namespaceId) { this.namespaceId = namespaceId; } http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/master/src/main/java/org/apache/accumulo/master/tableOps/NamespaceInfo.java ---------------------------------------------------------------------- diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/NamespaceInfo.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/NamespaceInfo.java index aadb24f..c277233 100644 --- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/NamespaceInfo.java +++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/NamespaceInfo.java @@ -16,6 +16,8 @@ */ package org.apache.accumulo.master.tableOps; +import org.apache.accumulo.core.client.impl.Namespace; + import java.io.Serializable; import java.util.Map; @@ -24,7 +26,7 @@ class NamespaceInfo implements Serializable { private static final long serialVersionUID = 1L; String namespaceName; - String namespaceId; + Namespace.ID namespaceId; String user; public Map<String,String> props; http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/master/src/main/java/org/apache/accumulo/master/tableOps/PopulateMetadataTable.java ---------------------------------------------------------------------- diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/PopulateMetadataTable.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/PopulateMetadataTable.java index ff3ee18..cfd61fe 100644 --- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/PopulateMetadataTable.java +++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/PopulateMetadataTable.java @@ -134,7 +134,7 @@ class PopulateMetadataTable extends MasterRepo { String newName = fileNameMappings.get(oldName); if (newName == null) { - throw new AcceptableThriftTableOperationException(tableInfo.tableId, tableInfo.tableName, TableOperation.IMPORT, + throw new AcceptableThriftTableOperationException(tableInfo.tableId.canonicalID(), tableInfo.tableName, TableOperation.IMPORT, TableOperationExceptionType.OTHER, "File " + oldName + " does not exist in import dir"); } @@ -183,8 +183,8 @@ class PopulateMetadataTable extends MasterRepo { return new MoveExportedFiles(tableInfo); } catch (IOException ioe) { log.warn("{}", ioe.getMessage(), ioe); - throw new AcceptableThriftTableOperationException(tableInfo.tableId, tableInfo.tableName, TableOperation.IMPORT, TableOperationExceptionType.OTHER, - "Error reading " + path + " " + ioe.getMessage()); + throw new AcceptableThriftTableOperationException(tableInfo.tableId.canonicalID(), tableInfo.tableName, TableOperation.IMPORT, + TableOperationExceptionType.OTHER, "Error reading " + path + " " + ioe.getMessage()); } finally { if (zis != null) { try { http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/master/src/main/java/org/apache/accumulo/master/tableOps/RenameNamespace.java ---------------------------------------------------------------------- diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/RenameNamespace.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/RenameNamespace.java index 5373b94..8637406 100644 --- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/RenameNamespace.java +++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/RenameNamespace.java @@ -19,6 +19,7 @@ package org.apache.accumulo.master.tableOps; import org.apache.accumulo.core.Constants; import org.apache.accumulo.core.client.Instance; import org.apache.accumulo.core.client.impl.AcceptableThriftTableOperationException; +import org.apache.accumulo.core.client.impl.Namespace; import org.apache.accumulo.core.client.impl.Tables; import org.apache.accumulo.core.client.impl.thrift.TableOperation; import org.apache.accumulo.core.client.impl.thrift.TableOperationExceptionType; @@ -33,7 +34,7 @@ import org.slf4j.LoggerFactory; public class RenameNamespace extends MasterRepo { private static final long serialVersionUID = 1L; - private String namespaceId; + private Namespace.ID namespaceId; private String oldName; private String newName; @@ -42,7 +43,7 @@ public class RenameNamespace extends MasterRepo { return Utils.reserveNamespace(namespaceId, id, true, true, TableOperation.RENAME); } - public RenameNamespace(String namespaceId, String oldName, String newName) { + public RenameNamespace(Namespace.ID namespaceId, String oldName, String newName) { this.namespaceId = namespaceId; this.oldName = oldName; this.newName = newName; http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/master/src/main/java/org/apache/accumulo/master/tableOps/RenameTable.java ---------------------------------------------------------------------- diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/RenameTable.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/RenameTable.java index ebd424f..1a6c696 100644 --- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/RenameTable.java +++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/RenameTable.java @@ -22,7 +22,9 @@ import org.apache.accumulo.core.Constants; import org.apache.accumulo.core.client.Instance; import org.apache.accumulo.core.client.NamespaceNotFoundException; import org.apache.accumulo.core.client.impl.AcceptableThriftTableOperationException; +import org.apache.accumulo.core.client.impl.Namespace; import org.apache.accumulo.core.client.impl.Namespaces; +import org.apache.accumulo.core.client.impl.Table; import org.apache.accumulo.core.client.impl.Tables; import org.apache.accumulo.core.client.impl.thrift.TableOperation; import org.apache.accumulo.core.client.impl.thrift.TableOperationExceptionType; @@ -38,8 +40,8 @@ import org.slf4j.LoggerFactory; public class RenameTable extends MasterRepo { private static final long serialVersionUID = 1L; - private String tableId; - private String namespaceId; + private Table.ID tableId; + private Namespace.ID namespaceId; private String oldTableName; private String newTableName; @@ -48,7 +50,7 @@ public class RenameTable extends MasterRepo { return Utils.reserveNamespace(namespaceId, tid, false, true, TableOperation.RENAME) + Utils.reserveTable(tableId, tid, true, true, TableOperation.RENAME); } - public RenameTable(String namespaceId, String tableId, String oldTableName, String newTableName) throws NamespaceNotFoundException { + public RenameTable(Namespace.ID namespaceId, Table.ID tableId, String oldTableName, String newTableName) throws NamespaceNotFoundException { this.namespaceId = namespaceId; this.tableId = tableId; this.oldTableName = oldTableName; @@ -63,7 +65,7 @@ public class RenameTable extends MasterRepo { // ensure no attempt is made to rename across namespaces if (newTableName.contains(".") && !namespaceId.equals(Namespaces.getNamespaceId(instance, qualifiedNewTableName.getFirst()))) - throw new AcceptableThriftTableOperationException(tableId, oldTableName, TableOperation.RENAME, TableOperationExceptionType.INVALID_NAME, + throw new AcceptableThriftTableOperationException(tableId.canonicalID(), oldTableName, TableOperation.RENAME, TableOperationExceptionType.INVALID_NAME, "Namespace in new table name does not match the old table name"); IZooReaderWriter zoo = ZooReaderWriter.getInstance(); http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/master/src/main/java/org/apache/accumulo/master/tableOps/TableInfo.java ---------------------------------------------------------------------- diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/TableInfo.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/TableInfo.java index ab418ae..5727833 100644 --- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/TableInfo.java +++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/TableInfo.java @@ -16,6 +16,9 @@ */ package org.apache.accumulo.master.tableOps; +import org.apache.accumulo.core.client.impl.Namespace; +import org.apache.accumulo.core.client.impl.Table; + import java.io.Serializable; import java.util.Map; @@ -24,8 +27,8 @@ class TableInfo implements Serializable { private static final long serialVersionUID = 1L; String tableName; - String tableId; - String namespaceId; + Table.ID tableId; + Namespace.ID namespaceId; char timeType; String user; http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/master/src/main/java/org/apache/accumulo/master/tableOps/TableRangeOp.java ---------------------------------------------------------------------- diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/TableRangeOp.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/TableRangeOp.java index 2577a13..3470761 100644 --- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/TableRangeOp.java +++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/TableRangeOp.java @@ -17,6 +17,8 @@ package org.apache.accumulo.master.tableOps; import org.apache.accumulo.core.client.impl.AcceptableThriftTableOperationException; +import org.apache.accumulo.core.client.impl.Namespace; +import org.apache.accumulo.core.client.impl.Table; import org.apache.accumulo.core.client.impl.thrift.TableOperation; import org.apache.accumulo.core.client.impl.thrift.TableOperationExceptionType; import org.apache.accumulo.core.data.impl.KeyExtent; @@ -36,8 +38,8 @@ public class TableRangeOp extends MasterRepo { private static final long serialVersionUID = 1L; - private final String tableId; - private final String namespaceId; + private final Table.ID tableId; + private final Namespace.ID namespaceId; private byte[] startRow; private byte[] endRow; private Operation op; @@ -47,7 +49,8 @@ public class TableRangeOp extends MasterRepo { return Utils.reserveNamespace(namespaceId, tid, false, true, TableOperation.MERGE) + Utils.reserveTable(tableId, tid, true, true, TableOperation.MERGE); } - public TableRangeOp(MergeInfo.Operation op, String namespaceId, String tableId, Text startRow, Text endRow) throws AcceptableThriftTableOperationException { + public TableRangeOp(MergeInfo.Operation op, Namespace.ID namespaceId, Table.ID tableId, Text startRow, Text endRow) + throws AcceptableThriftTableOperationException { this.tableId = tableId; this.namespaceId = namespaceId; this.startRow = TextUtil.getBytes(startRow); @@ -67,7 +70,7 @@ public class TableRangeOp extends MasterRepo { if (start != null && end != null) if (start.compareTo(end) >= 0) - throw new AcceptableThriftTableOperationException(tableId, null, TableOperation.MERGE, TableOperationExceptionType.BAD_RANGE, + throw new AcceptableThriftTableOperationException(tableId.canonicalID(), null, TableOperation.MERGE, TableOperationExceptionType.BAD_RANGE, "start row must be less than end row"); env.mustBeOnline(tableId); http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/master/src/main/java/org/apache/accumulo/master/tableOps/TableRangeOpWait.java ---------------------------------------------------------------------- diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/TableRangeOpWait.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/TableRangeOpWait.java index 0992b5f..4363909 100644 --- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/TableRangeOpWait.java +++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/TableRangeOpWait.java @@ -16,6 +16,8 @@ */ package org.apache.accumulo.master.tableOps; +import org.apache.accumulo.core.client.impl.Namespace; +import org.apache.accumulo.core.client.impl.Table; import org.apache.accumulo.fate.Repo; import org.apache.accumulo.master.Master; import org.apache.accumulo.server.master.state.MergeInfo; @@ -40,10 +42,10 @@ class TableRangeOpWait extends MasterRepo { private static final Logger log = LoggerFactory.getLogger(TableRangeOpWait.class); private static final long serialVersionUID = 1L; - private String tableId; - private String namespaceId; + private Table.ID tableId; + private Namespace.ID namespaceId; - public TableRangeOpWait(String namespaceId, String tableId) { + public TableRangeOpWait(Namespace.ID namespaceId, Table.ID tableId) { this.tableId = tableId; this.namespaceId = namespaceId; } http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/master/src/main/java/org/apache/accumulo/master/tableOps/Utils.java ---------------------------------------------------------------------- diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/Utils.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/Utils.java index 33dbb18..0719b1b 100644 --- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/Utils.java +++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/Utils.java @@ -18,6 +18,7 @@ package org.apache.accumulo.master.tableOps; import static java.nio.charset.StandardCharsets.UTF_8; +import java.lang.reflect.Constructor; import java.math.BigInteger; import java.util.Base64; import java.util.concurrent.locks.Lock; @@ -25,8 +26,11 @@ import java.util.concurrent.locks.ReentrantLock; import org.apache.accumulo.core.Constants; import org.apache.accumulo.core.client.Instance; +import org.apache.accumulo.core.client.impl.AbstractId; import org.apache.accumulo.core.client.impl.AcceptableThriftTableOperationException; +import org.apache.accumulo.core.client.impl.Namespace; import org.apache.accumulo.core.client.impl.Namespaces; +import org.apache.accumulo.core.client.impl.Table; import org.apache.accumulo.core.client.impl.Tables; import org.apache.accumulo.core.client.impl.thrift.TableOperation; import org.apache.accumulo.core.client.impl.thrift.TableOperationExceptionType; @@ -46,18 +50,16 @@ public class Utils { private static final byte[] ZERO_BYTE = new byte[] {'0'}; private static final Logger log = LoggerFactory.getLogger(Utils.class); - static void checkTableDoesNotExist(Instance instance, String tableName, String tableId, TableOperation operation) + static void checkTableDoesNotExist(Instance instance, String tableName, Table.ID tableId, TableOperation operation) throws AcceptableThriftTableOperationException { - String id = Tables.getNameToIdMap(instance).get(tableName); + Table.ID id = Tables.lookupTableId(instance, tableName); if (id != null && !id.equals(tableId)) throw new AcceptableThriftTableOperationException(null, tableName, operation, TableOperationExceptionType.EXISTS, null); } - static String getNextTableId(String tableName, Instance instance) throws AcceptableThriftTableOperationException { - - String tableId = null; + static <T extends AbstractId> T getNextTableId(String tableName, Instance instance, Class<T> idClassType) throws AcceptableThriftTableOperationException { try { IZooReaderWriter zoo = ZooReaderWriter.getInstance(); final String ntp = ZooUtil.getRoot(instance) + Constants.ZTABLES; @@ -69,23 +71,25 @@ public class Utils { return nextId.toString(Character.MAX_RADIX).getBytes(UTF_8); } }); - return new String(nid, UTF_8); + Constructor<T> constructor = idClassType.getConstructor(String.class); + return constructor.newInstance(new String(nid, UTF_8)); + // return idClassType.cast(new String(nid, UTF_8)); } catch (Exception e1) { log.error("Failed to assign tableId to " + tableName, e1); - throw new AcceptableThriftTableOperationException(tableId, tableName, TableOperation.CREATE, TableOperationExceptionType.OTHER, e1.getMessage()); + throw new AcceptableThriftTableOperationException(null, tableName, TableOperation.CREATE, TableOperationExceptionType.OTHER, e1.getMessage()); } } static final Lock tableNameLock = new ReentrantLock(); static final Lock idLock = new ReentrantLock(); - public static long reserveTable(String tableId, long tid, boolean writeLock, boolean tableMustExist, TableOperation op) throws Exception { + public static long reserveTable(Table.ID tableId, long tid, boolean writeLock, boolean tableMustExist, TableOperation op) throws Exception { if (getLock(tableId, tid, writeLock).tryLock()) { if (tableMustExist) { Instance instance = HdfsZooInstance.getInstance(); IZooReaderWriter zk = ZooReaderWriter.getInstance(); if (!zk.exists(ZooUtil.getRoot(instance) + Constants.ZTABLES + "/" + tableId)) - throw new AcceptableThriftTableOperationException(tableId, "", op, TableOperationExceptionType.NOTFOUND, "Table does not exist"); + throw new AcceptableThriftTableOperationException(tableId.canonicalID(), "", op, TableOperationExceptionType.NOTFOUND, "Table does not exist"); } log.info("table " + tableId + " (" + Long.toHexString(tid) + ") locked for " + (writeLock ? "write" : "read") + " operation: " + op); return 0; @@ -93,23 +97,24 @@ public class Utils { return 100; } - public static void unreserveTable(String tableId, long tid, boolean writeLock) throws Exception { + public static void unreserveTable(Table.ID tableId, long tid, boolean writeLock) throws Exception { getLock(tableId, tid, writeLock).unlock(); log.info("table " + tableId + " (" + Long.toHexString(tid) + ") unlocked for " + (writeLock ? "write" : "read")); } - public static void unreserveNamespace(String namespaceId, long id, boolean writeLock) throws Exception { + public static void unreserveNamespace(Namespace.ID namespaceId, long id, boolean writeLock) throws Exception { getLock(namespaceId, id, writeLock).unlock(); log.info("namespace " + namespaceId + " (" + Long.toHexString(id) + ") unlocked for " + (writeLock ? "write" : "read")); } - public static long reserveNamespace(String namespaceId, long id, boolean writeLock, boolean mustExist, TableOperation op) throws Exception { + public static long reserveNamespace(Namespace.ID namespaceId, long id, boolean writeLock, boolean mustExist, TableOperation op) throws Exception { if (getLock(namespaceId, id, writeLock).tryLock()) { if (mustExist) { Instance instance = HdfsZooInstance.getInstance(); IZooReaderWriter zk = ZooReaderWriter.getInstance(); if (!zk.exists(ZooUtil.getRoot(instance) + Constants.ZNAMESPACES + "/" + namespaceId)) - throw new AcceptableThriftTableOperationException(namespaceId, "", op, TableOperationExceptionType.NAMESPACE_NOTFOUND, "Namespace does not exist"); + throw new AcceptableThriftTableOperationException(namespaceId.canonicalID(), "", op, TableOperationExceptionType.NAMESPACE_NOTFOUND, + "Namespace does not exist"); } log.info("namespace " + namespaceId + " (" + Long.toHexString(id) + ") locked for " + (writeLock ? "write" : "read") + " operation: " + op); return 0; @@ -136,9 +141,9 @@ public class Utils { ZooReservation.release(ZooReaderWriter.getInstance(), resvPath, String.format("%016x", tid)); } - private static Lock getLock(String tableId, long tid, boolean writeLock) throws Exception { + private static Lock getLock(AbstractId id, long tid, boolean writeLock) throws Exception { byte[] lockData = String.format("%016x", tid).getBytes(UTF_8); - ZooQueueLock qlock = new ZooQueueLock(ZooUtil.getRoot(HdfsZooInstance.getInstance()) + Constants.ZTABLE_LOCKS + "/" + tableId, false); + ZooQueueLock qlock = new ZooQueueLock(ZooUtil.getRoot(HdfsZooInstance.getInstance()) + Constants.ZTABLE_LOCKS + "/" + id, false); Lock lock = DistributedReadWriteLock.recoverLock(qlock, lockData); if (lock == null) { DistributedReadWriteLock locker = new DistributedReadWriteLock(qlock, lockData); @@ -150,14 +155,14 @@ public class Utils { return lock; } - public static Lock getReadLock(String tableId, long tid) throws Exception { + public static Lock getReadLock(AbstractId tableId, long tid) throws Exception { return Utils.getLock(tableId, tid, false); } - static void checkNamespaceDoesNotExist(Instance instance, String namespace, String namespaceId, TableOperation operation) + static void checkNamespaceDoesNotExist(Instance instance, String namespace, Namespace.ID namespaceId, TableOperation operation) throws AcceptableThriftTableOperationException { - String n = Namespaces.getNameToIdMap(instance).get(namespace); + Namespace.ID n = Namespaces.lookupNamespaceId(instance, namespace); if (n != null && !n.equals(namespaceId)) throw new AcceptableThriftTableOperationException(null, namespace, operation, TableOperationExceptionType.NAMESPACE_EXISTS, null); http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/master/src/main/java/org/apache/accumulo/master/tableOps/WriteExportFiles.java ---------------------------------------------------------------------- diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/WriteExportFiles.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/WriteExportFiles.java index 12f6ae4..921df85 100644 --- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/WriteExportFiles.java +++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/WriteExportFiles.java @@ -36,6 +36,7 @@ import org.apache.accumulo.core.client.Connector; import org.apache.accumulo.core.client.Scanner; import org.apache.accumulo.core.client.TableNotFoundException; import org.apache.accumulo.core.client.impl.AcceptableThriftTableOperationException; +import org.apache.accumulo.core.client.impl.Table; import org.apache.accumulo.core.client.impl.Tables; import org.apache.accumulo.core.client.impl.thrift.TableOperation; import org.apache.accumulo.core.client.impl.thrift.TableOperationExceptionType; @@ -72,8 +73,8 @@ class WriteExportFiles extends MasterRepo { if (Tables.getTableState(conn.getInstance(), tableInfo.tableID) != TableState.OFFLINE) { Tables.clearCache(conn.getInstance()); if (Tables.getTableState(conn.getInstance(), tableInfo.tableID) != TableState.OFFLINE) { - throw new AcceptableThriftTableOperationException(tableInfo.tableID, tableInfo.tableName, TableOperation.EXPORT, TableOperationExceptionType.OTHER, - "Table is not offline"); + throw new AcceptableThriftTableOperationException(tableInfo.tableID.canonicalID(), tableInfo.tableName, TableOperation.EXPORT, + TableOperationExceptionType.OTHER, "Table is not offline"); } } } @@ -107,8 +108,8 @@ class WriteExportFiles extends MasterRepo { metaScanner.fetchColumnFamily(LogColumnFamily.NAME); if (metaScanner.iterator().hasNext()) { - throw new AcceptableThriftTableOperationException(tableInfo.tableID, tableInfo.tableName, TableOperation.EXPORT, TableOperationExceptionType.OTHER, - "Write ahead logs found for table"); + throw new AcceptableThriftTableOperationException(tableInfo.tableID.canonicalID(), tableInfo.tableName, TableOperation.EXPORT, + TableOperationExceptionType.OTHER, "Write ahead logs found for table"); } return 0; @@ -119,8 +120,8 @@ class WriteExportFiles extends MasterRepo { try { exportTable(master.getFileSystem(), master, tableInfo.tableName, tableInfo.tableID, tableInfo.exportDir); } catch (IOException ioe) { - throw new AcceptableThriftTableOperationException(tableInfo.tableID, tableInfo.tableName, TableOperation.EXPORT, TableOperationExceptionType.OTHER, - "Failed to create export files " + ioe.getMessage()); + throw new AcceptableThriftTableOperationException(tableInfo.tableID.canonicalID(), tableInfo.tableName, TableOperation.EXPORT, + TableOperationExceptionType.OTHER, "Failed to create export files " + ioe.getMessage()); } Utils.unreserveNamespace(tableInfo.namespaceID, tid, false); Utils.unreserveTable(tableInfo.tableID, tid, false); @@ -134,7 +135,7 @@ class WriteExportFiles extends MasterRepo { Utils.unreserveTable(tableInfo.tableID, tid, false); } - public static void exportTable(VolumeManager fs, AccumuloServerContext context, String tableName, String tableID, String exportDir) throws Exception { + public static void exportTable(VolumeManager fs, AccumuloServerContext context, String tableName, Table.ID tableID, String exportDir) throws Exception { fs.mkdirs(new Path(exportDir)); Path exportMetaFilePath = fs.getVolumeByPath(new Path(exportDir)).getFileSystem().makeQualified(new Path(exportDir, Constants.EXPORT_FILE)); @@ -144,16 +145,15 @@ class WriteExportFiles extends MasterRepo { BufferedOutputStream bufOut = new BufferedOutputStream(zipOut); DataOutputStream dataOut = new DataOutputStream(bufOut); - try { + try (OutputStreamWriter osw = new OutputStreamWriter(dataOut, UTF_8)) { zipOut.putNextEntry(new ZipEntry(Constants.EXPORT_INFO_FILE)); - OutputStreamWriter osw = new OutputStreamWriter(dataOut, UTF_8); osw.append(ExportTable.EXPORT_VERSION_PROP + ":" + ExportTable.VERSION + "\n"); osw.append("srcInstanceName:" + context.getInstance().getInstanceName() + "\n"); osw.append("srcInstanceID:" + context.getInstance().getInstanceID() + "\n"); osw.append("srcZookeepers:" + context.getInstance().getZooKeepers() + "\n"); osw.append("srcTableName:" + tableName + "\n"); - osw.append("srcTableID:" + tableID + "\n"); + osw.append("srcTableID:" + tableID.canonicalID() + "\n"); osw.append(ExportTable.DATA_VERSION_PROP + ":" + ServerConstants.DATA_VERSION + "\n"); osw.append("srcCodeVersion:" + Constants.VERSION + "\n"); @@ -197,7 +197,7 @@ class WriteExportFiles extends MasterRepo { } } - private static Map<String,String> exportMetadata(VolumeManager fs, AccumuloServerContext context, String tableID, ZipOutputStream zipOut, + private static Map<String,String> exportMetadata(VolumeManager fs, AccumuloServerContext context, Table.ID tableID, ZipOutputStream zipOut, DataOutputStream dataOut) throws IOException, TableNotFoundException, AccumuloException, AccumuloSecurityException { zipOut.putNextEntry(new ZipEntry(Constants.EXPORT_METADATA_FILE)); @@ -235,7 +235,7 @@ class WriteExportFiles extends MasterRepo { return uniqueFiles; } - private static void exportConfig(AccumuloServerContext context, String tableID, ZipOutputStream zipOut, DataOutputStream dataOut) throws AccumuloException, + private static void exportConfig(AccumuloServerContext context, Table.ID tableID, ZipOutputStream zipOut, DataOutputStream dataOut) throws AccumuloException, AccumuloSecurityException, TableNotFoundException, IOException { Connector conn = context.getConnector(); http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/master/src/main/java/org/apache/accumulo/master/util/TableValidators.java ---------------------------------------------------------------------- diff --git a/server/master/src/main/java/org/apache/accumulo/master/util/TableValidators.java b/server/master/src/main/java/org/apache/accumulo/master/util/TableValidators.java index 9a22c31..357ddfe 100644 --- a/server/master/src/main/java/org/apache/accumulo/master/util/TableValidators.java +++ b/server/master/src/main/java/org/apache/accumulo/master/util/TableValidators.java @@ -23,6 +23,7 @@ import java.util.Arrays; import java.util.List; import org.apache.accumulo.core.client.impl.Namespaces; +import org.apache.accumulo.core.client.impl.Table; import org.apache.accumulo.core.metadata.MetadataTable; import org.apache.accumulo.core.metadata.RootTable; import org.apache.accumulo.core.replication.ReplicationTable; @@ -47,15 +48,16 @@ public class TableValidators { } }; - public static final Validator<String> VALID_ID = new Validator<String>() { + public static final Validator<Table.ID> VALID_ID = new Validator<Table.ID>() { @Override - public boolean test(String tableId) { + public boolean test(Table.ID tableId) { return tableId != null - && (RootTable.ID.equals(tableId) || MetadataTable.ID.equals(tableId) || ReplicationTable.ID.equals(tableId) || tableId.matches(VALID_ID_REGEX)); + && (RootTable.ID.equals(tableId) || MetadataTable.ID.equals(tableId) || ReplicationTable.ID.equals(tableId) || tableId.canonicalID().matches( + VALID_ID_REGEX)); } @Override - public String invalidMessage(String tableId) { + public String invalidMessage(Table.ID tableId) { if (tableId == null) return "Table id cannot be null"; return "Table IDs are base-36 numbers, represented with lowercase alphanumeric digits: " + tableId; @@ -103,15 +105,15 @@ public class TableValidators { } }; - public static final Validator<String> NOT_ROOT_ID = new Validator<String>() { + public static final Validator<Table.ID> NOT_ROOT_ID = new Validator<Table.ID>() { @Override - public boolean test(String tableId) { + public boolean test(Table.ID tableId) { return !RootTable.ID.equals(tableId); } @Override - public String invalidMessage(String tableId) { + public String invalidMessage(Table.ID tableId) { return "Table cannot be the " + RootTable.NAME + "(Id: " + RootTable.ID + ") table"; } }; http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/master/src/test/java/org/apache/accumulo/master/replication/DistributedWorkQueueWorkAssignerHelperTest.java ---------------------------------------------------------------------- diff --git a/server/master/src/test/java/org/apache/accumulo/master/replication/DistributedWorkQueueWorkAssignerHelperTest.java b/server/master/src/test/java/org/apache/accumulo/master/replication/DistributedWorkQueueWorkAssignerHelperTest.java index 789a634..a1c5e69 100644 --- a/server/master/src/test/java/org/apache/accumulo/master/replication/DistributedWorkQueueWorkAssignerHelperTest.java +++ b/server/master/src/test/java/org/apache/accumulo/master/replication/DistributedWorkQueueWorkAssignerHelperTest.java @@ -19,6 +19,7 @@ package org.apache.accumulo.master.replication; import java.util.Map.Entry; import java.util.UUID; +import org.apache.accumulo.core.client.impl.Table; import org.apache.accumulo.core.replication.ReplicationTarget; import org.apache.accumulo.server.replication.DistributedWorkQueueWorkAssignerHelper; import org.apache.hadoop.fs.Path; @@ -34,7 +35,7 @@ public class DistributedWorkQueueWorkAssignerHelperTest { @Test public void createsValidZKNodeName() { Path p = new Path("/accumulo/wals/tserver+port/" + UUID.randomUUID().toString()); - ReplicationTarget target = new ReplicationTarget("cluster1", "table1", "1"); + ReplicationTarget target = new ReplicationTarget("cluster1", "table1", new Table.ID("1")); String key = DistributedWorkQueueWorkAssignerHelper.getQueueKey(p.toString(), target); @@ -44,7 +45,7 @@ public class DistributedWorkQueueWorkAssignerHelperTest { @Test public void queueKeySerialization() { Path p = new Path("/accumulo/wals/tserver+port/" + UUID.randomUUID().toString()); - ReplicationTarget target = new ReplicationTarget("cluster1", "table1", "1"); + ReplicationTarget target = new ReplicationTarget("cluster1", "table1", new Table.ID("1")); String key = DistributedWorkQueueWorkAssignerHelper.getQueueKey(p.toString(), target); http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/master/src/test/java/org/apache/accumulo/master/replication/SequentialWorkAssignerTest.java ---------------------------------------------------------------------- diff --git a/server/master/src/test/java/org/apache/accumulo/master/replication/SequentialWorkAssignerTest.java b/server/master/src/test/java/org/apache/accumulo/master/replication/SequentialWorkAssignerTest.java index 45fe959..83f36f4 100644 --- a/server/master/src/test/java/org/apache/accumulo/master/replication/SequentialWorkAssignerTest.java +++ b/server/master/src/test/java/org/apache/accumulo/master/replication/SequentialWorkAssignerTest.java @@ -26,6 +26,7 @@ import java.util.TreeMap; import org.apache.accumulo.core.client.Connector; import org.apache.accumulo.core.client.Instance; +import org.apache.accumulo.core.client.impl.Table; import org.apache.accumulo.core.conf.AccumuloConfiguration; import org.apache.accumulo.core.replication.ReplicationConstants; import org.apache.accumulo.core.replication.ReplicationTarget; @@ -59,8 +60,8 @@ public class SequentialWorkAssignerTest { Map<String,String> cluster1Work = new TreeMap<>(); // Two files for cluster1, one for table '1' and another for table '2' we havce assigned work for - cluster1Work.put("1", DistributedWorkQueueWorkAssignerHelper.getQueueKey("file1", new ReplicationTarget("cluster1", "1", "1"))); - cluster1Work.put("2", DistributedWorkQueueWorkAssignerHelper.getQueueKey("file2", new ReplicationTarget("cluster1", "2", "2"))); + cluster1Work.put("1", DistributedWorkQueueWorkAssignerHelper.getQueueKey("file1", new ReplicationTarget("cluster1", "1", new Table.ID("1")))); + cluster1Work.put("2", DistributedWorkQueueWorkAssignerHelper.getQueueKey("file2", new ReplicationTarget("cluster1", "2", new Table.ID("2")))); queuedWork.put("cluster1", cluster1Work); @@ -75,11 +76,11 @@ public class SequentialWorkAssignerTest { // file1 replicated expect( zooCache.get(ZooUtil.getRoot("instance") + ReplicationConstants.ZOO_WORK_QUEUE + "/" - + DistributedWorkQueueWorkAssignerHelper.getQueueKey("file1", new ReplicationTarget("cluster1", "1", "1")))).andReturn(null); + + DistributedWorkQueueWorkAssignerHelper.getQueueKey("file1", new ReplicationTarget("cluster1", "1", new Table.ID("1"))))).andReturn(null); // file2 still needs to replicate expect( zooCache.get(ZooUtil.getRoot("instance") + ReplicationConstants.ZOO_WORK_QUEUE + "/" - + DistributedWorkQueueWorkAssignerHelper.getQueueKey("file2", new ReplicationTarget("cluster1", "2", "2")))).andReturn(new byte[0]); + + DistributedWorkQueueWorkAssignerHelper.getQueueKey("file2", new ReplicationTarget("cluster1", "2", new Table.ID("2"))))).andReturn(new byte[0]); replay(workQueue, zooCache, conn, inst); @@ -88,6 +89,7 @@ public class SequentialWorkAssignerTest { verify(workQueue, zooCache, conn, inst); Assert.assertEquals(1, cluster1Work.size()); - Assert.assertEquals(DistributedWorkQueueWorkAssignerHelper.getQueueKey("file2", new ReplicationTarget("cluster1", "2", "2")), cluster1Work.get("2")); + Assert.assertEquals(DistributedWorkQueueWorkAssignerHelper.getQueueKey("file2", new ReplicationTarget("cluster1", "2", new Table.ID("2"))), + cluster1Work.get("2")); } } http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/master/src/test/java/org/apache/accumulo/master/replication/UnorderedWorkAssignerTest.java ---------------------------------------------------------------------- diff --git a/server/master/src/test/java/org/apache/accumulo/master/replication/UnorderedWorkAssignerTest.java b/server/master/src/test/java/org/apache/accumulo/master/replication/UnorderedWorkAssignerTest.java index a9af68b..40e3d9e 100644 --- a/server/master/src/test/java/org/apache/accumulo/master/replication/UnorderedWorkAssignerTest.java +++ b/server/master/src/test/java/org/apache/accumulo/master/replication/UnorderedWorkAssignerTest.java @@ -32,6 +32,7 @@ import java.util.UUID; import org.apache.accumulo.core.Constants; import org.apache.accumulo.core.client.Connector; import org.apache.accumulo.core.client.Instance; +import org.apache.accumulo.core.client.impl.Table; import org.apache.accumulo.core.conf.AccumuloConfiguration; import org.apache.accumulo.core.replication.ReplicationConstants; import org.apache.accumulo.core.replication.ReplicationTarget; @@ -57,7 +58,7 @@ public class UnorderedWorkAssignerTest { @Test public void workQueuedUsingFileName() throws Exception { - ReplicationTarget target = new ReplicationTarget("cluster1", "table1", "1"); + ReplicationTarget target = new ReplicationTarget("cluster1", "table1", new Table.ID("1")); DistributedWorkQueue workQueue = createMock(DistributedWorkQueue.class); Set<String> queuedWork = new HashSet<>(); http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/master/src/test/java/org/apache/accumulo/master/state/RootTabletStateStoreTest.java ---------------------------------------------------------------------- diff --git a/server/master/src/test/java/org/apache/accumulo/master/state/RootTabletStateStoreTest.java b/server/master/src/test/java/org/apache/accumulo/master/state/RootTabletStateStoreTest.java index 6497f96..fe7365d 100644 --- a/server/master/src/test/java/org/apache/accumulo/master/state/RootTabletStateStoreTest.java +++ b/server/master/src/test/java/org/apache/accumulo/master/state/RootTabletStateStoreTest.java @@ -27,6 +27,7 @@ import java.util.Collections; import java.util.HashSet; import java.util.List; +import org.apache.accumulo.core.client.impl.Table; import org.apache.accumulo.core.data.impl.KeyExtent; import org.apache.accumulo.core.metadata.RootTable; import org.apache.accumulo.server.master.state.Assignment; @@ -190,7 +191,7 @@ public class RootTabletStateStoreTest { } assertEquals(count, 1); - KeyExtent notRoot = new KeyExtent("0", null, null); + KeyExtent notRoot = new KeyExtent(new Table.ID("0"), null, null); try { tstore.setLocations(Collections.singletonList(new Assignment(notRoot, server))); Assert.fail("should not get here"); http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/master/src/test/java/org/apache/accumulo/master/tableOps/ImportTableTest.java ---------------------------------------------------------------------- diff --git a/server/master/src/test/java/org/apache/accumulo/master/tableOps/ImportTableTest.java b/server/master/src/test/java/org/apache/accumulo/master/tableOps/ImportTableTest.java index 1d9c694..ee54820 100644 --- a/server/master/src/test/java/org/apache/accumulo/master/tableOps/ImportTableTest.java +++ b/server/master/src/test/java/org/apache/accumulo/master/tableOps/ImportTableTest.java @@ -18,6 +18,7 @@ package org.apache.accumulo.master.tableOps; import java.util.Optional; +import org.apache.accumulo.core.client.impl.Table; import org.apache.accumulo.master.Master; import org.apache.accumulo.server.fs.VolumeChooserEnvironment; import org.apache.accumulo.server.fs.VolumeManager; @@ -35,7 +36,7 @@ public class ImportTableTest { Master master = EasyMock.createMock(Master.class); VolumeManager volumeManager = EasyMock.createMock(VolumeManager.class); ImportedTableInfo iti = new ImportedTableInfo(); - iti.tableId = "5"; + iti.tableId = new Table.ID("5"); // Different volumes with different paths String[] tableDirs = new String[] {"hdfs://nn1:8020/apps/accumulo1/tables", "hdfs://nn2:8020/applications/accumulo/tables"}; http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/monitor/src/main/java/org/apache/accumulo/monitor/Monitor.java ---------------------------------------------------------------------- diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/Monitor.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/Monitor.java index 67ca0df..5cdc80a 100644 --- a/server/monitor/src/main/java/org/apache/accumulo/monitor/Monitor.java +++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/Monitor.java @@ -42,6 +42,7 @@ import org.apache.accumulo.core.Constants; import org.apache.accumulo.core.client.Connector; import org.apache.accumulo.core.client.Instance; import org.apache.accumulo.core.client.impl.MasterClient; +import org.apache.accumulo.core.client.impl.Table; import org.apache.accumulo.core.conf.Property; import org.apache.accumulo.core.conf.SiteConfiguration; import org.apache.accumulo.core.gc.thrift.GCMonitorService; @@ -156,7 +157,7 @@ public class Monitor implements HighlyAvailableService { private static volatile boolean fetching = false; private static MasterMonitorInfo mmi; - private static Map<String,Map<ProblemType,Integer>> problemSummary = Collections.emptyMap(); + private static Map<Table.ID,Map<ProblemType,Integer>> problemSummary = Collections.emptyMap(); private static Exception problemException; private static GCStatus gcStatus; @@ -760,7 +761,7 @@ public class Monitor implements HighlyAvailableService { return problemException; } - public static Map<String,Map<ProblemType,Integer>> getProblemSummary() { + public static Map<Table.ID,Map<ProblemType,Integer>> getProblemSummary() { return problemSummary; } http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/problems/ProblemDetailInformation.java ---------------------------------------------------------------------- diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/problems/ProblemDetailInformation.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/problems/ProblemDetailInformation.java index 436e3fd..d32ccf5 100644 --- a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/problems/ProblemDetailInformation.java +++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/problems/ProblemDetailInformation.java @@ -16,6 +16,8 @@ */ package org.apache.accumulo.monitor.rest.problems; +import org.apache.accumulo.core.client.impl.Table; + /** * * Generates a problem detail as a JSON object @@ -27,7 +29,7 @@ public class ProblemDetailInformation { // Variable names become JSON keys public String tableName; - public String tableID; + public Table.ID tableID; public String type; public String server; @@ -55,7 +57,7 @@ public class ProblemDetailInformation { * @param exception * Exception of the problem */ - public ProblemDetailInformation(String tableName, String tableID, String type, String server, Long time, String resource, String exception) { + public ProblemDetailInformation(String tableName, Table.ID tableID, String type, String server, Long time, String resource, String exception) { this.tableName = tableName; this.tableID = tableID; this.type = type; http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/problems/ProblemSummaryInformation.java ---------------------------------------------------------------------- diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/problems/ProblemSummaryInformation.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/problems/ProblemSummaryInformation.java index 53e032f..78fdbad 100644 --- a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/problems/ProblemSummaryInformation.java +++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/problems/ProblemSummaryInformation.java @@ -16,6 +16,8 @@ */ package org.apache.accumulo.monitor.rest.problems; +import org.apache.accumulo.core.client.impl.Table; + /** * * Generates a problem summary object @@ -27,7 +29,7 @@ public class ProblemSummaryInformation { // Variable names become JSON keys public String tableName; - public String tableID; + public Table.ID tableID; public Integer fileRead; public Integer fileWrite; @@ -49,7 +51,7 @@ public class ProblemSummaryInformation { * @param tableLoad * Number of table loads */ - public ProblemSummaryInformation(String tableName, String tableID, Integer fileRead, Integer fileWrite, Integer tableLoad) { + public ProblemSummaryInformation(String tableName, Table.ID tableID, Integer fileRead, Integer fileWrite, Integer tableLoad) { this.tableName = tableName; this.tableID = tableID; this.fileRead = fileRead; http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/problems/ProblemsResource.java ---------------------------------------------------------------------- diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/problems/ProblemsResource.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/problems/ProblemsResource.java index baff1de..08549a0 100644 --- a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/problems/ProblemsResource.java +++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/problems/ProblemsResource.java @@ -29,6 +29,7 @@ import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; +import org.apache.accumulo.core.client.impl.Table; import org.apache.accumulo.core.client.impl.Tables; import org.apache.accumulo.monitor.Monitor; import org.apache.accumulo.server.client.HdfsZooInstance; @@ -60,10 +61,8 @@ public class ProblemsResource { ProblemSummary problems = new ProblemSummary(); - Map<String,String> tidToNameMap = Tables.getIdToNameMap(HdfsZooInstance.getInstance()); - if (Monitor.getProblemException() == null) { - for (Entry<String,Map<ProblemType,Integer>> entry : Monitor.getProblemSummary().entrySet()) { + for (Entry<Table.ID,Map<ProblemType,Integer>> entry : Monitor.getProblemSummary().entrySet()) { Integer readCount = null, writeCount = null, loadCount = null; for (ProblemType pt : ProblemType.values()) { @@ -77,7 +76,7 @@ public class ProblemsResource { } } - String tableName = Tables.getPrintableTableNameFromId(tidToNameMap, entry.getKey()); + String tableName = Tables.getPrintableTableInfoFromId(HdfsZooInstance.getInstance(), entry.getKey()); problems.addProblemSummary(new ProblemSummaryInformation(tableName, entry.getKey(), readCount, writeCount, loadCount)); } @@ -97,7 +96,7 @@ public class ProblemsResource { public void clearTableProblems(@QueryParam("s") String tableID) { Logger log = LoggerFactory.getLogger(Monitor.class); try { - ProblemReports.getInstance(Monitor.getContext()).deleteProblemReports(tableID); + ProblemReports.getInstance(Monitor.getContext()).deleteProblemReports(new Table.ID(tableID)); } catch (Exception e) { log.error("Failed to delete problem reports for table " + tableID, e); } @@ -114,17 +113,15 @@ public class ProblemsResource { ProblemDetail problems = new ProblemDetail(); - Map<String,String> tidToNameMap = Tables.getIdToNameMap(HdfsZooInstance.getInstance()); - if (Monitor.getProblemException() == null) { - for (Entry<String,Map<ProblemType,Integer>> entry : Monitor.getProblemSummary().entrySet()) { + for (Entry<Table.ID,Map<ProblemType,Integer>> entry : Monitor.getProblemSummary().entrySet()) { ArrayList<ProblemReport> problemReports = new ArrayList<>(); Iterator<ProblemReport> iter = entry.getKey() == null ? ProblemReports.getInstance(Monitor.getContext()).iterator() : ProblemReports.getInstance( Monitor.getContext()).iterator(entry.getKey()); while (iter.hasNext()) problemReports.add(iter.next()); for (ProblemReport pr : problemReports) { - String tableName = Tables.getPrintableTableNameFromId(tidToNameMap, pr.getTableName()); + String tableName = Tables.getPrintableTableInfoFromId(HdfsZooInstance.getInstance(), pr.getTableId()); problems.addProblemDetail(new ProblemDetailInformation(tableName, entry.getKey(), pr.getProblemType().name(), pr.getServer(), pr.getTime(), pr .getResource(), pr.getException())); @@ -150,7 +147,7 @@ public class ProblemsResource { public void clearDetailsProblems(@QueryParam("table") String tableID, @QueryParam("resource") String resource, @QueryParam("ptype") String ptype) { Logger log = LoggerFactory.getLogger(Monitor.class); try { - ProblemReports.getInstance(Monitor.getContext()).deleteProblemReport(tableID, ProblemType.valueOf(ptype), resource); + ProblemReports.getInstance(Monitor.getContext()).deleteProblemReport(new Table.ID(tableID), ProblemType.valueOf(ptype), resource); } catch (Exception e) { log.error("Failed to delete problem reports for table " + tableID, e); } http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/replication/ReplicationResource.java ---------------------------------------------------------------------- diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/replication/ReplicationResource.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/replication/ReplicationResource.java index 2ca28fe..1c37d0a 100644 --- a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/replication/ReplicationResource.java +++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/replication/ReplicationResource.java @@ -37,6 +37,8 @@ import org.apache.accumulo.core.client.Connector; import org.apache.accumulo.core.client.TableNotFoundException; import org.apache.accumulo.core.client.TableOfflineException; import org.apache.accumulo.core.client.admin.TableOperations; +import org.apache.accumulo.core.client.impl.Table; +import org.apache.accumulo.core.client.impl.Tables; import org.apache.accumulo.core.conf.Property; import org.apache.accumulo.core.data.Key; import org.apache.accumulo.core.data.Range; @@ -109,14 +111,14 @@ public class ReplicationResource { // Number of files per target we have to replicate Map<ReplicationTarget,Long> targetCounts = new HashMap<>(); - Map<String,String> tableNameToId = tops.tableIdMap(); - Map<String,String> tableIdToName = invert(tableNameToId); + Map<String,Table.ID> tableNameToId = Tables.getNameToIdMap(null); + Map<Table.ID,String> tableIdToName = invert(tableNameToId); for (String table : tops.list()) { if (MetadataTable.NAME.equals(table) || RootTable.NAME.equals(table)) { continue; } - String localId = tableNameToId.get(table); + Table.ID localId = tableNameToId.get(table); if (null == localId) { log.trace("Could not determine ID for {}", table); continue; @@ -194,9 +196,9 @@ public class ReplicationResource { return replicationInformation; } - protected Map<String,String> invert(Map<String,String> map) { - Map<String,String> newMap = new HashMap<>(map.size()); - for (Entry<String,String> entry : map.entrySet()) { + protected Map<Table.ID,String> invert(Map<String,Table.ID> map) { + Map<Table.ID,String> newMap = new HashMap<>(map.size()); + for (Entry<String,Table.ID> entry : map.entrySet()) { newMap.put(entry.getValue(), entry.getKey()); } return newMap; http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tables/TableInformation.java ---------------------------------------------------------------------- diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tables/TableInformation.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tables/TableInformation.java index 51e2390..d151046 100644 --- a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tables/TableInformation.java +++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tables/TableInformation.java @@ -16,6 +16,7 @@ */ package org.apache.accumulo.monitor.rest.tables; +import org.apache.accumulo.core.client.impl.Table; import org.apache.accumulo.core.master.thrift.TableInfo; /** @@ -29,7 +30,7 @@ public class TableInformation { // Variable names become JSON keys public String tablename; - public String tableId; + public Table.ID tableId; public String tableState; public int tablets; @@ -72,7 +73,7 @@ public class TableInformation { * @param tableState * State of the table */ - public TableInformation(String tableName, String tableId, String tableState) { + public TableInformation(String tableName, Table.ID tableId, String tableState) { this.tablename = tableName; this.tableId = tableId; this.tableState = tableState; @@ -92,7 +93,7 @@ public class TableInformation { * @param tableState * State of the table */ - public TableInformation(String tableName, String tableId, TableInfo info, Double holdTime, String tableState) { + public TableInformation(String tableName, Table.ID tableId, TableInfo info, Double holdTime, String tableState) { this.tablename = tableName; this.tableId = tableId; http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tables/TablesResource.java ---------------------------------------------------------------------- diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tables/TablesResource.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tables/TablesResource.java index 8c4f685..11c8b49 100644 --- a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tables/TablesResource.java +++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tables/TablesResource.java @@ -33,7 +33,9 @@ import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import org.apache.accumulo.core.client.Instance; +import org.apache.accumulo.core.client.impl.Namespace; import org.apache.accumulo.core.client.impl.Namespaces; +import org.apache.accumulo.core.client.impl.Table; import org.apache.accumulo.core.client.impl.Tables; import org.apache.accumulo.core.data.Range; import org.apache.accumulo.core.data.impl.KeyExtent; @@ -72,7 +74,7 @@ public class TablesResource { * @return Table list */ private static TablesList generateTables(String namespace) { - SortedMap<String,String> namespaces = Namespaces.getNameToIdMap(Monitor.getContext().getInstance()); + SortedMap<String,Namespace.ID> namespaces = Namespaces.getNameToIdMap(Monitor.getContext().getInstance()); TablesList tableNamespace = new TablesList(); @@ -97,22 +99,22 @@ public class TablesResource { */ private static TablesList generateTables(TablesList tableNamespace) { Instance inst = Monitor.getContext().getInstance(); - Map<String,String> tidToNameMap = Tables.getIdToNameMap(inst); SortedMap<String,TableInfo> tableStats = new TreeMap<>(); if (Monitor.getMmi() != null && Monitor.getMmi().tableMap != null) for (Entry<String,TableInfo> te : Monitor.getMmi().tableMap.entrySet()) - tableStats.put(Tables.getPrintableTableNameFromId(tidToNameMap, te.getKey()), te.getValue()); + tableStats.put(Tables.getPrintableTableInfoFromId(inst, new Table.ID(te.getKey())), te.getValue()); Map<String,Double> compactingByTable = TableInfoUtil.summarizeTableStats(Monitor.getMmi()); TableManager tableManager = TableManager.getInstance(); List<TableInformation> tables = new ArrayList<>(); // Add tables to the list - for (Entry<String,String> entry : Tables.getNameToIdMap(HdfsZooInstance.getInstance()).entrySet()) { - String tableName = entry.getKey(), tableId = entry.getValue(); + for (Entry<String,Table.ID> entry : Tables.getNameToIdMap(HdfsZooInstance.getInstance()).entrySet()) { + String tableName = entry.getKey(); + Table.ID tableId = entry.getValue(); TableInfo tableInfo = tableStats.get(tableName); if (null != tableInfo) { - Double holdTime = compactingByTable.get(tableId); + Double holdTime = compactingByTable.get(tableId.canonicalID()); if (holdTime == null) holdTime = Double.valueOf(0.); @@ -173,7 +175,7 @@ public class TablesResource { @GET @Path("namespaces/{namespaces}") public TablesList getTableWithNamespace(@PathParam("namespaces") String namespaceList) { - SortedMap<String,String> namespaces = Namespaces.getNameToIdMap(Monitor.getContext().getInstance()); + SortedMap<String,Namespace.ID> namespaces = Namespaces.getNameToIdMap(Monitor.getContext().getInstance()); TablesList tableNamespace = new TablesList(); /* @@ -193,14 +195,15 @@ public class TablesResource { /** * Generates a list of participating tservers for a table * - * @param tableId + * @param tableIdStr * Table ID to find participating tservers * @return List of participating tservers */ @Path("{tableId}") @GET - public TabletServers getParticipatingTabletServers(@PathParam("tableId") String tableId) throws Exception { + public TabletServers getParticipatingTabletServers(@PathParam("tableId") String tableIdStr) throws Exception { Instance instance = Monitor.getContext().getInstance(); + Table.ID tableId = new Table.ID(tableIdStr); TabletServers tabletServers = new TabletServers(Monitor.getMmi().tServerInfo.size()); @@ -244,7 +247,7 @@ public class TablesResource { status = NO_STATUS; TableInfo summary = TableInfoUtil.summarizeTableStats(status); if (tableId != null) - summary = status.tableMap.get(tableId); + summary = status.tableMap.get(tableId.canonicalID()); if (summary == null) continue; http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/CurrentOperations.java ---------------------------------------------------------------------- diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/CurrentOperations.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/CurrentOperations.java index 4db7587..59908ec 100644 --- a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/CurrentOperations.java +++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/CurrentOperations.java @@ -16,6 +16,8 @@ */ package org.apache.accumulo.monitor.rest.tservers; +import org.apache.accumulo.core.client.impl.Table; + /** * * Generates the current operations for the tablet @@ -28,7 +30,7 @@ public class CurrentOperations { // Variable names become JSON keys public String name; public String tablet; - public String tableID; + public Table.ID tableID; public long entries; public double ingest; public double query; @@ -69,7 +71,7 @@ public class CurrentOperations { * @param majorAvgES * Major compaction average ES */ - public CurrentOperations(String name, String ID, String tablet, long entries, double ingest, double query, Double minorAvg, Double minorStdDev, + public CurrentOperations(String name, Table.ID ID, String tablet, long entries, double ingest, double query, Double minorAvg, Double minorStdDev, Double minorAvgES, Double majorAvg, Double majorStdDev, Double majorAvgES) { this.name = name; this.tableID = ID; http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/TabletServerResource.java ---------------------------------------------------------------------- diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/TabletServerResource.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/TabletServerResource.java index a7bafc1..8e5607a 100644 --- a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/TabletServerResource.java +++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/TabletServerResource.java @@ -21,7 +21,6 @@ import java.security.MessageDigest; import java.util.ArrayList; import java.util.Base64; import java.util.List; -import java.util.Map; import javax.ws.rs.Consumes; import javax.ws.rs.GET; @@ -36,6 +35,7 @@ import javax.ws.rs.core.Response.Status; import org.apache.accumulo.core.Constants; import org.apache.accumulo.core.client.impl.ClientContext; +import org.apache.accumulo.core.client.impl.Table; import org.apache.accumulo.core.client.impl.Tables; import org.apache.accumulo.core.conf.Property; import org.apache.accumulo.core.data.impl.KeyExtent; @@ -288,8 +288,6 @@ public class TabletServerResource { private List<CurrentOperations> doCurrentOperations(List<TabletStats> tsStats) throws Exception { - Map<String,String> tidToNameMap = Tables.getIdToNameMap(HdfsZooInstance.getInstance()); - List<CurrentOperations> currentOperations = new ArrayList<>(); for (TabletStats info : tsStats) { @@ -302,7 +300,7 @@ public class TabletServerResource { ActionStatsUpdator.update(total.majors, info.majors); KeyExtent extent = new KeyExtent(info.extent); - String tableId = extent.getTableId(); + Table.ID tableId = extent.getTableId(); MessageDigest digester = MessageDigest.getInstance("MD5"); if (extent.getEndRow() != null && extent.getEndRow().getLength() > 0) { digester.update(extent.getEndRow().getBytes(), 0, extent.getEndRow().getLength()); @@ -310,7 +308,7 @@ public class TabletServerResource { String obscuredExtent = Base64.getEncoder().encodeToString(digester.digest()); String displayExtent = String.format("[%s]", obscuredExtent); - String tableName = Tables.getPrintableTableNameFromId(tidToNameMap, tableId); + String tableName = Tables.getPrintableTableInfoFromId(HdfsZooInstance.getInstance(), tableId); currentOperations.add(new CurrentOperations(tableName, tableId, displayExtent, info.numEntries, info.ingestRate, info.queryRate, info.minors.num != 0 ? info.minors.elapsed / info.minors.num : null, stddev(info.minors.elapsed, info.minors.num, info.minors.sumDev), http://git-wip-us.apache.org/repos/asf/accumulo/blob/d6ea49e0/server/monitor/src/main/java/org/apache/accumulo/monitor/view/WebViews.java ---------------------------------------------------------------------- diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/view/WebViews.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/view/WebViews.java index ea337a3..9bcc177 100644 --- a/server/monitor/src/main/java/org/apache/accumulo/monitor/view/WebViews.java +++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/view/WebViews.java @@ -30,6 +30,7 @@ import javax.ws.rs.core.MediaType; import org.apache.accumulo.core.Constants; import org.apache.accumulo.core.client.TableNotFoundException; +import org.apache.accumulo.core.client.impl.Table; import org.apache.accumulo.core.client.impl.Tables; import org.apache.accumulo.core.util.AddressUtil; import org.apache.accumulo.monitor.Monitor; @@ -236,7 +237,7 @@ public class WebViews { @Template(name = "/default.ftl") public Map<String,Object> getTables(@PathParam("tableID") String tableID) throws TableNotFoundException { - String table = Tables.getTableName(Monitor.getContext().getInstance(), tableID); + String tableName = Tables.getTableName(Monitor.getContext().getInstance(), new Table.ID(tableID)); Map<String,Object> model = getModel(); model.put("title", "Table Status"); @@ -244,7 +245,7 @@ public class WebViews { model.put("template", "table.ftl"); model.put("js", "table.js"); model.put("tableID", tableID); - model.put("table", table); + model.put("table", tableName); return model; }