HBASE-14203 remove duplicate code getTableDescriptor in HTable (Heng Chen)

Conflicts:
	hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
This commit is contained in:
Enis Soztutar 2015-08-17 16:05:26 -07:00
parent c619e0c76f
commit c9b3d837a0
2 changed files with 30 additions and 37 deletions

View File

@ -444,25 +444,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)
@ -4000,6 +4007,11 @@ public class HBaseAdmin implements Admin {
}
private <V> V executeCallable(MasterCallable<V> callable) throws IOException {
return executeCallable(callable, rpcCallerFactory, operationTimeout);
}
private static <V> V executeCallable(MasterCallable<V> callable,
RpcRetryingCallerFactory rpcCallerFactory, int operationTimeout) throws IOException {
RpcRetryingCaller<V> caller = rpcCallerFactory.newCaller();
try {
return caller.callWithRetries(callable, operationTimeout);

View File

@ -571,30 +571,11 @@ public class HTable implements HTableInterface, RegionLocator {
*/
@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 {