HBASE-23203 NPE in RSGroup info (#747)

Signed-off-by: Duo Zhang <zhangduo@apache.org>
This commit is contained in:
Karthik Palanisamy 2019-10-24 17:43:34 -07:00 committed by Duo Zhang
parent 65ee17086a
commit 8f92a14cd1
6 changed files with 36 additions and 3 deletions

View File

@ -124,6 +124,14 @@ public interface Admin extends Abortable, Closeable {
*/ */
List<TableDescriptor> listTableDescriptors() throws IOException; List<TableDescriptor> listTableDescriptors() throws IOException;
/**
* List all userspace tables and whether or not include system tables.
*
* @return a list of TableDescriptors
* @throws IOException if a remote or network exception occurs
*/
List<TableDescriptor> listTableDescriptors(boolean includeSysTables) throws IOException;
/** /**
* List all the userspace tables that match the given pattern. * List all the userspace tables that match the given pattern.
* *

View File

@ -131,6 +131,12 @@ class AdminOverAsyncAdmin implements Admin {
return get(admin.listTableDescriptors()); return get(admin.listTableDescriptors());
} }
@Override
public List<TableDescriptor> listTableDescriptors(boolean includeSysTables)
throws IOException {
return get(admin.listTableDescriptors(includeSysTables));
}
@Override @Override
public List<TableDescriptor> listTableDescriptors(Pattern pattern, boolean includeSysTables) public List<TableDescriptor> listTableDescriptors(Pattern pattern, boolean includeSysTables)
throws IOException { throws IOException {

View File

@ -493,7 +493,8 @@ class RawAsyncHBaseAdmin implements AsyncAdmin {
public CompletableFuture<List<TableDescriptor>> listTableDescriptors(Pattern pattern, public CompletableFuture<List<TableDescriptor>> listTableDescriptors(Pattern pattern,
boolean includeSysTables) { boolean includeSysTables) {
Preconditions.checkNotNull(pattern, Preconditions.checkNotNull(pattern,
"pattern is null. If you don't specify a pattern, use listTables(boolean) instead"); "pattern is null. If you don't specify a pattern, "
+ "use listTableDescriptors(boolean) instead");
return getTableDescriptors(RequestConverter.buildGetTableDescriptorsRequest(pattern, return getTableDescriptors(RequestConverter.buildGetTableDescriptorsRequest(pattern,
includeSysTables)); includeSysTables));
} }
@ -501,7 +502,8 @@ class RawAsyncHBaseAdmin implements AsyncAdmin {
@Override @Override
public CompletableFuture<List<TableDescriptor>> listTableDescriptors(List<TableName> tableNames) { public CompletableFuture<List<TableDescriptor>> listTableDescriptors(List<TableName> tableNames) {
Preconditions.checkNotNull(tableNames, Preconditions.checkNotNull(tableNames,
"tableNames is null. If you don't specify tableNames, " + "use listTables(boolean) instead"); "tableNames is null. If you don't specify tableNames, "
+ "use listTableDescriptors(boolean) instead");
if (tableNames.isEmpty()) { if (tableNames.isEmpty()) {
return CompletableFuture.completedFuture(Collections.emptyList()); return CompletableFuture.completedFuture(Collections.emptyList());
} }

View File

@ -437,7 +437,7 @@
<% if (rsGroupTables != null && rsGroupTables.size() > 0) { <% if (rsGroupTables != null && rsGroupTables.size() > 0) {
List<TableDescriptor> tables; List<TableDescriptor> tables;
try (Admin admin = master.getConnection().getAdmin()) { try (Admin admin = master.getConnection().getAdmin()) {
tables = master.isInitialized() ? admin.listTableDescriptors((Pattern)null, true) : null; tables = master.isInitialized() ? admin.listTableDescriptors(true) : null;
} }
Map<TableName, HTableDescriptor> tableDescriptors Map<TableName, HTableDescriptor> tableDescriptors
= tables.stream().collect(Collectors.toMap(TableDescriptor::getTableName, p -> new HTableDescriptor(p))); = tables.stream().collect(Collectors.toMap(TableDescriptor::getTableName, p -> new HTableDescriptor(p)));

View File

@ -57,6 +57,18 @@ public class TestAdmin extends TestAdminBase {
private static final Logger LOG = LoggerFactory.getLogger(TestAdmin.class); private static final Logger LOG = LoggerFactory.getLogger(TestAdmin.class);
@Test
public void testListTableDescriptors() throws IOException{
TableDescriptor metaTableDescriptor = TEST_UTIL.getAdmin().
getDescriptor(TableName.META_TABLE_NAME);
List<TableDescriptor> tableDescriptors = TEST_UTIL.getAdmin().
listTableDescriptors(true);
assertTrue(tableDescriptors.contains(metaTableDescriptor));
tableDescriptors = TEST_UTIL.getAdmin().
listTableDescriptors(false);
assertFalse(tableDescriptors.contains(metaTableDescriptor));
}
@Test @Test
public void testCreateTable() throws IOException { public void testCreateTable() throws IOException {
List<TableDescriptor> tables = ADMIN.listTableDescriptors(); List<TableDescriptor> tables = ADMIN.listTableDescriptors();

View File

@ -139,6 +139,11 @@ public class ThriftAdmin implements Admin {
return listTableDescriptors((Pattern) null); return listTableDescriptors((Pattern) null);
} }
@Override
public List<TableDescriptor> listTableDescriptors(boolean includeSysTables) throws IOException {
return listTableDescriptors(null, includeSysTables);
}
@Override @Override
public List<TableDescriptor> listTableDescriptors(Pattern pattern) throws IOException { public List<TableDescriptor> listTableDescriptors(Pattern pattern) throws IOException {
return listTableDescriptors(pattern, false); return listTableDescriptors(pattern, false);