Dieter De Paepe created HBASE-28412: ---------------------------------------
Summary: TableNotFoundException while restoring out-of-system incremental backup with mapping Key: HBASE-28412 URL: https://issues.apache.org/jira/browse/HBASE-28412 Project: HBase Issue Type: Bug Components: backup&restore Affects Versions: 2.6.0 Reporter: Dieter De Paepe It appears that restoring a non-existing table from an incremental backup with the "-m" parameter results in an error in the restore client. Reproduction steps: Start from a table with some data {code:java} hbase:006:0> scan 'lily_tenant_acme:LILY_SETTINGS' ROW COLUMN+CELL row1 column=0:a, timestamp=2024-02-27T18:49:46.489, value=val1 row1 column=0:test, timestamp=2024-02-29T15:46:29.956, value=value2 {code} Create a full backup. {code:java} hbase backup create full /tmp/backup_hbase2 {code} Change the table (eg using hbase shell): {code:java} put 'lily_tenant_acme:LILY_SETTINGS', 'row1', '0:test', 'value3' {code} Create an incremental backup {code:java} hbase backup create incremental /tmp/backup_hbase2 {code} Delete the table: {code:java} disable 'lily_tenant_acme:LILY_SETTINGS' drop 'lily_tenant_acme:LILY_SETTINGS' {code} Restore of the incremental backup with the "-m" parameter results in an error: {code:java} hbase restore hdfs:///tmp/backup_hbase2 backup_1709222166873 -t "lily_tenant_acme:LILY_SETTINGS" -m "lily_tenant_acme:LILY_SETTINGS-restored" 24/02/29 15:59:20 WARN org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil: The addDependencyJars(Configuration, Class<?>...) method has been deprecated since it is easy to use incorrectly. Most users should rely on addDependencyJars(Job) instead. See HBASE-8386 for more details. 24/02/29 15:59:35 WARN org.apache.hadoop.hbase.tool.LoadIncrementalHFiles: Skipping non-directory hdfs://hdfsns/user/lily/hbase-staging/bulk_output-lily_tenant_acme-LILY_SETTINGS-restored-1709222360030/_SUCCESS 24/02/29 15:59:36 ERROR org.apache.hadoop.hbase.backup.mapreduce.MapReduceRestoreJob: org.apache.hadoop.hbase.TableNotFoundException: lily_tenant_acme:LILY_SETTINGS org.apache.hadoop.hbase.TableNotFoundException: lily_tenant_acme:LILY_SETTINGS at org.apache.hadoop.hbase.client.HBaseAdmin.getTableDescriptor(HBaseAdmin.java:635) at org.apache.hadoop.hbase.client.HTable.getDescriptor(HTable.java:244) at org.apache.hadoop.hbase.backup.mapreduce.MapReduceHFileSplitterJob.createSubmittableJob(MapReduceHFileSplitterJob.java:117) at org.apache.hadoop.hbase.backup.mapreduce.MapReduceHFileSplitterJob.run(MapReduceHFileSplitterJob.java:165) at org.apache.hadoop.hbase.backup.mapreduce.MapReduceRestoreJob.run(MapReduceRestoreJob.java:84) at org.apache.hadoop.hbase.backup.util.RestoreTool.incrementalRestoreTable(RestoreTool.java:205) at org.apache.hadoop.hbase.backup.impl.RestoreTablesClient.restoreImages(RestoreTablesClient.java:185) at org.apache.hadoop.hbase.backup.impl.RestoreTablesClient.restore(RestoreTablesClient.java:228) at org.apache.hadoop.hbase.backup.impl.RestoreTablesClient.execute(RestoreTablesClient.java:264) at org.apache.hadoop.hbase.backup.impl.BackupAdminImpl.restore(BackupAdminImpl.java:518) at org.apache.hadoop.hbase.backup.RestoreDriver.parseAndRun(RestoreDriver.java:176) at org.apache.hadoop.hbase.backup.RestoreDriver.doWork(RestoreDriver.java:216) at org.apache.hadoop.hbase.backup.RestoreDriver.run(RestoreDriver.java:252) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:82) at org.apache.hadoop.hbase.backup.RestoreDriver.main(RestoreDriver.java:224) 24/02/29 15:59:36 ERROR org.apache.hadoop.hbase.backup.RestoreDriver: Error while running restore backup java.io.IOException: Can not restore from backup directory hdfs://hdfsns/tmp/backup_hbase2/backup_1709222166873/lily_tenant_acme/LILY_SETTINGS/0/f011305e78cd4196bf67d4dcca859ea1,hdfs://hdfsns/tmp/backup_hbase2/backup_1709222166873/lily_tenant_acme/LILY_SETTINGS/c6f5124f51d797fde1a43093747d04fa/0/800bad45ccd049fda6a439b60954cd06_SeqId_4_,hdfs://hdfsns/tmp/backup_hbase2/backup_1709222166873/lily_tenant_acme/LILY_SETTINGS/c6f5124f51d797fde1a43093747d04fa/0/e334bbc7089e4c3f8dab84b9b704824c_SeqId_6_ (check Hadoop and HBase logs) at org.apache.hadoop.hbase.backup.mapreduce.MapReduceRestoreJob.run(MapReduceRestoreJob.java:103) at org.apache.hadoop.hbase.backup.util.RestoreTool.incrementalRestoreTable(RestoreTool.java:205) at org.apache.hadoop.hbase.backup.impl.RestoreTablesClient.restoreImages(RestoreTablesClient.java:185) at org.apache.hadoop.hbase.backup.impl.RestoreTablesClient.restore(RestoreTablesClient.java:228) at org.apache.hadoop.hbase.backup.impl.RestoreTablesClient.execute(RestoreTablesClient.java:264) at org.apache.hadoop.hbase.backup.impl.BackupAdminImpl.restore(BackupAdminImpl.java:518) at org.apache.hadoop.hbase.backup.RestoreDriver.parseAndRun(RestoreDriver.java:176) at org.apache.hadoop.hbase.backup.RestoreDriver.doWork(RestoreDriver.java:216) at org.apache.hadoop.hbase.backup.RestoreDriver.run(RestoreDriver.java:252) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:82) at org.apache.hadoop.hbase.backup.RestoreDriver.main(RestoreDriver.java:224) Caused by: org.apache.hadoop.hbase.TableNotFoundException: lily_tenant_acme:LILY_SETTINGS at org.apache.hadoop.hbase.client.HBaseAdmin.getTableDescriptor(HBaseAdmin.java:635) at org.apache.hadoop.hbase.client.HTable.getDescriptor(HTable.java:244) at org.apache.hadoop.hbase.backup.mapreduce.MapReduceHFileSplitterJob.createSubmittableJob(MapReduceHFileSplitterJob.java:117) at org.apache.hadoop.hbase.backup.mapreduce.MapReduceHFileSplitterJob.run(MapReduceHFileSplitterJob.java:165) at org.apache.hadoop.hbase.backup.mapreduce.MapReduceRestoreJob.run(MapReduceRestoreJob.java:84) ... 10 more {code} After this command, HBase has restored the table to the state of the full backup: {code:java} hbase:031:0> scan 'lily_tenant_acme:LILY_SETTINGS-restored' ROW COLUMN+CELL row1 column=0:a, timestamp=2024-02-27T18:49:46.489, value=val1 row1 column=0:test, timestamp=2024-02-29T15:46:29.956, value=value2 {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)