DieterDP-ng commented on code in PR #5868: URL: https://github.com/apache/hbase/pull/5868#discussion_r1590961068
########## hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupManager.java: ########## @@ -295,51 +298,31 @@ public ArrayList<BackupImage> getAncestors(BackupInfo backupInfo) throws IOExcep .withRootDir(backup.getBackupRootDir()).withTableList(backup.getTableNames()) .withStartTime(backup.getStartTs()).withCompleteTime(backup.getCompleteTs()).build(); - // Only direct ancestors for a backup are required and not entire history of backup for this - // table resulting in verifying all of the previous backups which is unnecessary and backup - // paths need not be valid beyond the lifetime of a backup. - // - // RootDir is way of grouping a single backup including one full and many incremental backups + // If the image has a different rootDir, it cannot be an ancestor. if (!image.getRootDir().equals(backupInfo.getBackupRootDir())) { continue; } - // add the full backup image as an ancestor until the last incremental backup - if (backup.getType().equals(BackupType.FULL)) { - // check the backup image coverage, if previous image could be covered by the newer ones, - // then no need to add - if (!BackupManifest.canCoverImage(ancestors, image)) { - ancestors.add(image); - } + // The ancestors consist of the most recent FULL backups that cover the list of tables + // required in the new backup and all INCREMENTAL backups that came after one of those FULL + // backups. + if (backup.getType().equals(BackupType.INCREMENTAL)) { Review Comment: For an incremental backup, `BackupAdminImpl#backupTables` throws away the user-specified tables, and replaces them with the output of `BackupSystemTable#getIncrementalBackupTableSet(targetRootDir)`. There is one "incremental backup set" tracked for backup rootdir. Any table that part of a full backup gets added, entries only get deleted if all backups of that table get deleted. (Note that I just logged https://issues.apache.org/jira/browse/HBASE-28568 for a bug in that logic.) So it seems the code is intended to work as I originally described. -- 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: issues-unsubscr...@hbase.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org