ACCUMULO-2087 Check for the null result from zk and throw something slightly more meaningful.
Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/744f06bf Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/744f06bf Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/744f06bf Branch: refs/heads/1.6.0-SNAPSHOT Commit: 744f06bfbf23f1cf3f8b0f8b785decd04e69842f Parents: e8c9aae Author: Josh Elser <[email protected]> Authored: Mon Dec 23 22:51:32 2013 -0500 Committer: Josh Elser <[email protected]> Committed: Mon Dec 23 22:51:32 2013 -0500 ---------------------------------------------------------------------- .../apache/accumulo/core/client/impl/Tables.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/accumulo/blob/744f06bf/core/src/main/java/org/apache/accumulo/core/client/impl/Tables.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/Tables.java b/core/src/main/java/org/apache/accumulo/core/client/impl/Tables.java index 45db491..ba11f1e 100644 --- a/core/src/main/java/org/apache/accumulo/core/client/impl/Tables.java +++ b/core/src/main/java/org/apache/accumulo/core/client/impl/Tables.java @@ -30,6 +30,7 @@ import org.apache.accumulo.core.client.NamespaceNotFoundException; import org.apache.accumulo.core.client.TableNotFoundException; import org.apache.accumulo.core.master.state.tables.TableState; import org.apache.accumulo.core.metadata.MetadataTable; +import org.apache.accumulo.core.util.ArgumentChecker; import org.apache.accumulo.core.util.Pair; import org.apache.accumulo.core.zookeeper.ZooUtil; import org.apache.accumulo.fate.zookeeper.ZooCache; @@ -195,9 +196,24 @@ public class Tables { return new Pair<String,String>(defaultNamespace, tableName); } - public static String getNamespace(Instance instance, String tableId) { + /** + * Returns the namespace for a given table ID. + * @param instance The Accumulo Instance + * @param tableId The tableId + * @return The namespace which this table resides in. + * @throws IllegalArgumentException if the table doesn't exist in ZooKeeper + */ + public static String getNamespace(Instance instance, String tableId) throws IllegalArgumentException { + ArgumentChecker.notNull(instance, tableId); + ZooCache zc = getZooCache(instance); byte[] n = zc.get(ZooUtil.getRoot(instance) + Constants.ZTABLES + "/" + tableId + Constants.ZTABLE_NAMESPACE); + + // We might get null out of ZooCache if this tableID doesn't exist + if (null == n) { + throw new IllegalArgumentException("Table with id " + tableId + " does not exist"); + } + return new String(n, Constants.UTF8); } }
