diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java index b2cd755..218fdc3 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java @@ -395,7 +395,26 @@ public class HBaseAdmin implements Admin { @Override public HTableDescriptor getTableDescriptor(final TableName tableName) throws TableNotFoundException, IOException { - return this.connection.getHTableDescriptor(tableName); + if (tableName.equals(TableName.META_TABLE_NAME)) { + return HTableDescriptor.META_TABLEDESC; + } + HTableDescriptor htd = + executeCallable(new MasterCallable(getConnection()) { + @Override + public HTableDescriptor call(int callTimeout) throws ServiceException { + GetTableDescriptorsRequest req = + RequestConverter.buildGetTableDescriptorsRequest(tableName); + GetTableDescriptorsResponse htds = master.getTableDescriptors(null, req); + if (!htds.getTableSchemaList().isEmpty()) { + return HTableDescriptor.convert(htds.getTableSchemaList().get(0)); + } + return null; + } + }); + if (htd == null) { + throw new TableNotFoundException(tableName.getNameAsString()); + } + return htd; } public HTableDescriptor getTableDescriptor(final byte[] tableName)