From 9a8f9319e11bf53433b06325c10e9b92657ffa5e Mon Sep 17 00:00:00 2001 From: Vladimir Rodionov Date: Wed, 9 May 2018 12:18:48 -0700 Subject: [PATCH] HBASE-20530:Composition of backup directory containing namespace when restoring is different from the actual hfile location --- .../test/java/org/apache/hadoop/hbase/backup/TestBackupBase.java | 6 +++--- .../java/org/apache/hadoop/hbase/backup/TestIncrementalBackup.java | 4 ++-- .../java/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.java | 5 +++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupBase.java b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupBase.java index 4243f5b481..08ecd632c6 100644 --- a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupBase.java +++ b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupBase.java @@ -88,8 +88,8 @@ public class TestBackupBase { protected static TableName table3 = TableName.valueOf("table3"); protected static TableName table4 = TableName.valueOf("table4"); - protected static TableName table1_restore = TableName.valueOf("ns1:table1_restore"); - protected static TableName table2_restore = TableName.valueOf("ns2:table2_restore"); + protected static TableName table1_restore = TableName.valueOf("default:table1"); + protected static TableName table2_restore = TableName.valueOf("ns2:table2"); protected static TableName table3_restore = TableName.valueOf("ns3:table3_restore"); protected static TableName table4_restore = TableName.valueOf("ns4:table4_restore"); @@ -404,7 +404,7 @@ public class TestBackupBase { protected static void createTables() throws Exception { long tid = System.currentTimeMillis(); - table1 = TableName.valueOf("ns1:test-" + tid); + table1 = TableName.valueOf("test-" + tid); HBaseAdmin ha = TEST_UTIL.getHBaseAdmin(); // Create namespaces diff --git a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackup.java b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackup.java index 0bce769373..b74f42fb83 100644 --- a/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackup.java +++ b/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestIncrementalBackup.java @@ -163,14 +163,14 @@ public class TestIncrementalBackup extends TestBackupBase { String backupIdIncMultiple2 = client.backupTables(request); assertTrue(checkSucceeded(backupIdIncMultiple2)); - // #4 - restore full backup for all tables, without overwrite + // #4 - restore full backup for all tables TableName[] tablesRestoreFull = new TableName[] { table1, table2 }; TableName[] tablesMapFull = new TableName[] { table1_restore, table2_restore }; LOG.debug("Restoring full " + backupIdFull); client.restore(BackupUtils.createRestoreRequest(BACKUP_ROOT_DIR, backupIdFull, false, - tablesRestoreFull, tablesMapFull, false)); + tablesRestoreFull, tablesMapFull, true)); // #5.1 - check tables for full restore HBaseAdmin hAdmin = TEST_UTIL.getHBaseAdmin(); diff --git a/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.java b/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.java index 3b04c0b00b..8bee4d5abb 100644 --- a/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.java +++ b/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.java @@ -251,6 +251,7 @@ public class HFileOutputFormat2 byte[] tableNameBytes = null; if (writeMultipleTables) { tableNameBytes = MultiTableHFileOutputFormat.getTableName(row.get()); + tableNameBytes = TableName.valueOf(tableNameBytes).getNameWithNamespaceInclAsString().getBytes(); if (!allTableNames.contains(Bytes.toString(tableNameBytes))) { throw new IllegalArgumentException("TableName '" + Bytes.toString(tableNameBytes) + "' not" + " expected"); @@ -639,7 +640,7 @@ public class HFileOutputFormat2 for( TableInfo tableInfo : multiTableInfo ) { regionLocators.add(tableInfo.getRegionLocator()); - allTableNames.add(tableInfo.getRegionLocator().getName().getNameAsString()); + allTableNames.add(tableInfo.getRegionLocator().getName().getNameWithNamespaceInclAsString()); tableDescriptors.add(tableInfo.getTableDescriptor()); } // Record tablenames for creating writer by favored nodes, and decoding compression, block size and other attributes of columnfamily per table @@ -679,7 +680,7 @@ public class HFileOutputFormat2 ArrayList singleTableDescriptor = new ArrayList<>(1); singleTableDescriptor.add(tableDescriptor); - conf.set(OUTPUT_TABLE_NAME_CONF_KEY, tableDescriptor.getTableName().getNameAsString()); + conf.set(OUTPUT_TABLE_NAME_CONF_KEY, tableDescriptor.getTableName().getNameWithNamespaceInclAsString()); // Set compression algorithms based on column families conf.set(COMPRESSION_FAMILIES_CONF_KEY, serializeColumnFamilyAttribute(compressionDetails, singleTableDescriptor)); -- 2.14.3 (Apple Git-98)