HBASE-14203 remove duplicate code getTableDescriptor in HTable (Heng Chen)
This commit is contained in:
parent
2ed7f9bb1d
commit
395ec5a9bb
|
@ -446,25 +446,32 @@ public class HBaseAdmin implements Admin {
|
|||
@Override
|
||||
public HTableDescriptor getTableDescriptor(final TableName tableName)
|
||||
throws TableNotFoundException, IOException {
|
||||
if (tableName == null) return null;
|
||||
HTableDescriptor htd = executeCallable(new MasterCallable<HTableDescriptor>(getConnection()) {
|
||||
@Override
|
||||
public HTableDescriptor call(int callTimeout) throws ServiceException {
|
||||
GetTableDescriptorsResponse htds;
|
||||
GetTableDescriptorsRequest req =
|
||||
RequestConverter.buildGetTableDescriptorsRequest(tableName);
|
||||
htds = master.getTableDescriptors(null, req);
|
||||
return getTableDescriptor(tableName, getConnection(), rpcCallerFactory, operationTimeout);
|
||||
}
|
||||
|
||||
if (!htds.getTableSchemaList().isEmpty()) {
|
||||
return HTableDescriptor.convert(htds.getTableSchemaList().get(0));
|
||||
static HTableDescriptor getTableDescriptor(final TableName tableName,
|
||||
HConnection connection, RpcRetryingCallerFactory rpcCallerFactory,
|
||||
int operationTimeout) throws TableNotFoundException, IOException {
|
||||
|
||||
if (tableName == null) return null;
|
||||
HTableDescriptor htd = executeCallable(new MasterCallable<HTableDescriptor>(connection) {
|
||||
@Override
|
||||
public HTableDescriptor call(int callTimeout) throws ServiceException {
|
||||
GetTableDescriptorsResponse htds;
|
||||
GetTableDescriptorsRequest req =
|
||||
RequestConverter.buildGetTableDescriptorsRequest(tableName);
|
||||
htds = master.getTableDescriptors(null, req);
|
||||
|
||||
if (!htds.getTableSchemaList().isEmpty()) {
|
||||
return HTableDescriptor.convert(htds.getTableSchemaList().get(0));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
return null;
|
||||
}, rpcCallerFactory, operationTimeout);
|
||||
if (htd != null) {
|
||||
return htd;
|
||||
}
|
||||
});
|
||||
if (htd != null) {
|
||||
return htd;
|
||||
}
|
||||
throw new TableNotFoundException(tableName.getNameAsString());
|
||||
throw new TableNotFoundException(tableName.getNameAsString());
|
||||
}
|
||||
|
||||
public HTableDescriptor getTableDescriptor(final byte[] tableName)
|
||||
|
@ -3986,6 +3993,11 @@ public class HBaseAdmin implements Admin {
|
|||
|
||||
private <C extends RetryingCallable<V> & Closeable, V> V executeCallable(C callable)
|
||||
throws IOException {
|
||||
return executeCallable(callable, rpcCallerFactory, operationTimeout);
|
||||
}
|
||||
|
||||
private static <C extends RetryingCallable<V> & Closeable, V> V executeCallable(C callable,
|
||||
RpcRetryingCallerFactory rpcCallerFactory, int operationTimeout) throws IOException {
|
||||
RpcRetryingCaller<V> caller = rpcCallerFactory.newCaller();
|
||||
try {
|
||||
return caller.callWithRetries(callable, operationTimeout);
|
||||
|
|
|
@ -265,30 +265,11 @@ public class HTable implements HTableInterface {
|
|||
*/
|
||||
@Override
|
||||
public HTableDescriptor getTableDescriptor() throws IOException {
|
||||
// TODO: This is the same as HBaseAdmin.getTableDescriptor(). Only keep one.
|
||||
if (tableName == null) return null;
|
||||
if (tableName.equals(TableName.META_TABLE_NAME)) {
|
||||
return HTableDescriptor.META_TABLEDESC;
|
||||
}
|
||||
HTableDescriptor htd = executeMasterCallable(
|
||||
new MasterCallable<HTableDescriptor>(getConnection()) {
|
||||
@Override
|
||||
public HTableDescriptor call(int callTimeout) throws ServiceException {
|
||||
GetTableDescriptorsResponse htds;
|
||||
GetTableDescriptorsRequest req =
|
||||
RequestConverter.buildGetTableDescriptorsRequest(tableName);
|
||||
htds = master.getTableDescriptors(null, req);
|
||||
|
||||
if (!htds.getTableSchemaList().isEmpty()) {
|
||||
return HTableDescriptor.convert(htds.getTableSchemaList().get(0));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
});
|
||||
HTableDescriptor htd = HBaseAdmin.getTableDescriptor(tableName, connection, rpcCallerFactory, operationTimeout);
|
||||
if (htd != null) {
|
||||
return new UnmodifyableHTableDescriptor(htd);
|
||||
}
|
||||
throw new TableNotFoundException(tableName.getNameAsString());
|
||||
return null;
|
||||
}
|
||||
|
||||
private <V> V executeMasterCallable(MasterCallable<V> callable) throws IOException {
|
||||
|
|
Loading…
Reference in New Issue