kgeisz opened a new pull request, #7664:
URL: https://github.com/apache/hbase/pull/7664

   https://issues.apache.org/jira/browse/HBASE-29826
   
   This pull request makes a change that deletes the bulk load output directory 
when a continuous incremental backup is complete.
   
   ### Summary
   
   Originally, a continuous incremental backup was creating a 
`backupRootDir/.tmp/backup_XXXX` directory for bulk load output, but this 
directory was not being deleted after.  This would cause an issue in 
`MapReduceBackupMergeJob` when performing a merge.  During the merge, it tries 
to move the backup directory to the `.tmp` directory.  Since the backup 
directory already exists inside of `.tmp`, the location of the backup manifest 
ends up being `.tmp/backup_XXXX/backup_XXXX/.backup.manifest`.  As a result, 
the backup manifest cannot be found and an error is thrown  because the code of 
lookin for the file in `.tmp/backup_XXXX/.backup.manifest` and not 
`.tmp/backup_XXXX/backup_XXXX/.backup.manifest`.
   
   ### Testing
   
   - I have added an `assert` statement to a continuous incremental backup unit 
test that verifies the backup directory has been deleted after the incremental 
backup is complete.
   - I have manually verified the bulk load directory is empty right before it 
is deleted, but this check has not been implemented into a unit test.  I looked 
into how this could be tested.  This check would need to be performed after 
`IncrementalTableBackupClient.handleBulkLoad()`.  The only place I see this 
method in current test code is in 
[TestBackupBase](https://github.com/apache/hbase/blob/master/hbase-backup/src/test/java/org/apache/hadoop/hbase/backup/TestBackupBase.java#L196),
 and this code is for non-continuous incremental backups.  Based on what I have 
found, handling this test case would require code changes beyond the scope of 
this PR that involve creating a test similar to the one in `TestBackupBase` or 
overriding `IncrementalTableBackupClient.execute()` in a test class to have it 
check the directory is empty and then delete.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to