You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "lixiaobao (JIRA)" <ji...@apache.org> on 2019/05/22 06:15:00 UTC
[jira] [Created] (HBASE-22453) A "NullPointerException" could be
thrown; "tableDescriptor" is nullable
lixiaobao created HBASE-22453:
---------------------------------
Summary: A "NullPointerException" could be thrown; "tableDescriptor" is nullable
Key: HBASE-22453
URL: https://issues.apache.org/jira/browse/HBASE-22453
Project: HBase
Issue Type: Bug
Components: backup&restore
Affects Versions: 2.1.4, 2.1.2, 2.0.0
Reporter: lixiaobao
Assignee: lixiaobao
Fix For: 3.0.0
In hbase-backup model the class "org.apache.hadoop.hbase.backup.util.RestoreTool"'s method incrementalRestoreTable(),A "NullPointerException" could be thrown; "tableDescriptor" is nullable here.
{code:java}
// adjust table schema
for (int i = 0; i < tableNames.length; i++) {
TableName tableName = tableNames[i];
TableDescriptor tableDescriptor = getTableDescriptor(fileSys, tableName, incrBackupId);
LOG.debug("Found descriptor " + tableDescriptor + " through " + incrBackupId);
TableName newTableName = newTableNames[i];
TableDescriptor newTableDescriptor = admin.getDescriptor(newTableName);
List<ColumnFamilyDescriptor> families = Arrays.asList(tableDescriptor.getColumnFamilies());
List<ColumnFamilyDescriptor> existingFamilies =
Arrays.asList(newTableDescriptor.getColumnFamilies());
TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(newTableDescriptor);
boolean schemaChangeNeeded = false;
for (ColumnFamilyDescriptor family : families) {
if (!existingFamilies.contains(family)) {
builder.setColumnFamily(family);
schemaChangeNeeded = true;
}
}
for (ColumnFamilyDescriptor family : existingFamilies) {
if (!families.contains(family)) {
builder.removeColumnFamily(family.getName());
schemaChangeNeeded = true;
}
}
if (schemaChangeNeeded) {
modifyTableSync(conn, builder.build());
LOG.info("Changed " + newTableDescriptor.getTableName() + " to: " + newTableDescriptor);
}
}
RestoreJob restoreService = BackupRestoreFactory.getRestoreJob(conf);
restoreService.run(logDirs, tableNames, newTableNames, false);
}
//代码占位符
{code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)