Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HBASE-28562 Correct backup ancestor calculation #5868

Merged

Conversation

DieterDP-ng
Copy link
Contributor

The ancestor calculation was wrong for incremental backups: when requesting the ancestors for an incremental backup X, the ancestors could include both full and incremental backups that predate the full backup on which X is built.

This caused a crash in incremental backup creation when data of old incremental backups was deleted through other means than the HBase API (i.e. without the HBase backup system table being updated).

@Apache-HBase

This comment has been minimized.

@Apache-HBase

This comment has been minimized.

@Apache-HBase

This comment has been minimized.

@Apache-HBase

This comment has been minimized.

@Apache-HBase

This comment has been minimized.

@Apache-HBase

This comment has been minimized.

@Apache-HBase

This comment has been minimized.

@Apache-HBase

This comment has been minimized.

// 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)) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe we're just iterating through all backup history at this point — what if the given incremental backup is not relevant to the tablesToCover? I think that should not be included as an ancestor, and I think that's what the BackupManifest#canCoverImage was hoping to achieve (but failing to due to the bugs explained in https://issues.apache.org/jira/browse/HBASE-28562?focusedCommentId=17843008&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-17843008

Hyperbolically, on a cluster with hundreds of tables taking incremental backups everyday, this would quickly balloon into huge BackupManifests that cannot fit in a reasonably sized heap

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure I understand your point, or I'm still missing something in my understanding of the backup mechanism.

In my understanding, a newly created incremental backup will include all tables that have been included in a full backup at some point. (I base this on what is shown in hbase backup history.) So that means that all incremental backups up to (and including) the original full backups are in fact ancestors.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

An incremental backup can apply to any subset of the total tables on a cluster, not necessarily all tables. So if your cluster has tables A, B, and C and you're fetching the ancestry for a table C backup, then you really don't want to include ancestors that only apply to table A and/or B

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did the following experiment:

echo "create 'table1', 'cf'" | bin/hbase shell -n
echo "create 'table2', 'cf'" | bin/hbase shell -n
echo "create 'table3', 'cf'" | bin/hbase shell -n
bin/hbase backup create full file:/tmp/hbasebackups -t table1,table2
echo "put 'table1', 'row1', 'cf:a', 'valueA'" | bin/hbase shell -n
echo "put 'table2', 'row1', 'cf:a', 'valueB'" | bin/hbase shell -n
bin/hbase backup create incremental file:/tmp/hbasebackups -t table1
bin/hbase backup history

{ID=backup_1714763143839,Type=INCREMENTAL,Tables={table2,table1},State=COMPLETE,Start time=Fri May 03 21:05:44 CEST 2024,End time=Fri May 03 21:05:47 CEST 2024,Progress=100%}
{ID=backup_1714763125413,Type=FULL,Tables={table2,table1},State=COMPLETE,Start time=Fri May 03 21:05:25 CEST 2024,End time=Fri May 03 21:05:29 CEST 2024,Progress=100%}

This seems to suggest that the incremental backup includes both tables, even though I only requested table1. So I don't think it's possible to create an incremental backup of just a single table if your FULL backups have more tables covered?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Interesting... sounds like yet another bug 😄 I'm going to need to read more of the code to understand what is happening. But I believe we should be able to take incremental backups of individual tables — the API seems to allow for it, and it's a clearly useful feature when the value proposition of the entire incremental backup system is to increase the granularity of backup operations

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @rmdmattingly, did you verify differences when restoring those backups? If so, can you share a reproducable set of steps?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll take a look today to see if I can give reproducible steps. Separately, +1 to the ancestry calculation improvements here — regardless of whether we support table specific ancestry trees, I've been playing around with this changeset vs 2.6 today and observed the several bug fixes that you've implemented here (stopping at the appropriate full backup, no more recursion issues when calculating ancestors' ancestors)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wrote up this test which only proves your point that incremental backups ignore the tableset input — ideally, from my perspective, this test would fail at

      // contains all 200 rows??? why/how/are they correct
      assertEquals(rowCount, 200);

or the API wouldn't accept a set of tables to backup

As for why I'm seeing different backup contents at my day job, it's a good question and probably not as easy to reproduce in a unit test. I'm picking up a years long backup system refactor after a colleague's departure, so I probably won't have a quick answer there either, but will continue to dig.

All this to say, you're correct here and I want to reiterate the improvements I mentioned above, so I think we should ship these changes 🚢

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rmdmattingly do we need to add your new unit test someplace?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Chatted with Nick this morning. I think there's room for a unit test of this genre — once we figure out exactly what the intention of the TableSet is on the backups API, then we should add a test which enforces these intentions. But this test in its current form isn't useful for that

Comment on lines 317 to 320
if (tablesToCover.isEmpty()) {
LOG.debug("Got {} ancestors for the current backup.", ancestors.size());
return ancestors;
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💯 Great addition

@Apache-HBase

This comment has been minimized.

Comment on lines 304 to 306
// 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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A separate bug that I noticed with this changeset:

Let's say that we have the following chronological backup history F_1, I_2, F_3, I_4 where the letter prefix indicates the type of backup (full or incremental) and the number indicates the timestamp at which it was taken.

With our current setup, fetching the ancestry of I_2 would return F_3, a backup which does not precede it. Instead this method should return F_1

Copy link
Contributor

@rmdmattingly rmdmattingly May 3, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indeed, the current implementation assumes that you can only ask the ancestors for a backup that you are newly creating. I think that was also the intention in the original implementation.
I based this on the mentioning of for the current backup in the javadoc and logging of the method, the current usages of the method (all related to a newly created backup), and this comment in the original code:

Otherwise, this incremental backup ancestor is the dependent ancestor of the ongoing incremental backup

I agree this functionality would be useful for historic backups as well, but it's unexpected that this would only work for backups still present in the backup table (e.g. it would not work for a new HBase instance that wants to restore files from cloud storage). For retrieving the ancestors of historic backups, it makes more sense to read the manifest instead, no?

I suggest clarifying the javadoc to highlight this is only for currently-being-created backups.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also relevant: in #5871 I clean up some usages of getAncestors, perhaps it's best to make this method non-public (and keep the current implementation where it only works for currently-being-created backups).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed with all of the reasoning here 👍

@Apache-HBase

This comment has been minimized.

@Apache-HBase

This comment has been minimized.

@Apache-HBase

This comment has been minimized.

Copy link
Contributor

@rmdmattingly rmdmattingly left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Test failure for TestIncrementalBackupMergeWithFailures seems related

@DieterDP-ng
Copy link
Contributor Author

I'll update the PR once #5871 gets merged. Not sure how to handle the rebasing of these changes? Should I do a force-push of this branch, or simply create a new PR instead?

@rmdmattingly
Copy link
Contributor

A rebase and force push should be good

The ancestor calculation was wrong for incremental backups:
when requesting the ancestors for an incremental backup X,
the ancestors could include both full and incremental backups
that predate the full backup on which X is built.

This caused a crash in incremental backup creation when data
of old incremental backups was deleted through other means than
the HBase API (i.e. without the HBase backup system table being
updated).
The ancestor calculation was wrong for incremental backups:
when requesting the ancestors for an incremental backup X,
the ancestors could include both full and incremental backups
that predate the full backup on which X is built.

This caused a crash in incremental backup creation when data
of old incremental backups was deleted through other means than
the HBase API (i.e. without the HBase backup system table being
updated).
Move this method since it is only used by the TableBackupClient.
@DieterDP-ng DieterDP-ng force-pushed the Hbase-28562_Backup_ancestor_location branch from 54174b3 to 3e8f2e9 Compare May 15, 2024 21:00
@DieterDP-ng
Copy link
Contributor Author

@rmdmattingly rebased the PR after addressing the getAncestors concerns. The test failure in previous version is a flaky test, it also occurs in #5876

@Apache-HBase
Copy link

🎊 +1 overall

Vote Subsystem Runtime Comment
+0 🆗 reexec 1m 5s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+1 💚 hbaseanti 0m 0s Patch does not have any anti-patterns.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
_ master Compile Tests _
+1 💚 mvninstall 4m 16s master passed
+1 💚 compile 0m 37s master passed
+1 💚 checkstyle 0m 12s master passed
+1 💚 spotless 0m 53s branch has no errors when running spotless:check.
+1 💚 spotbugs 0m 37s master passed
_ Patch Compile Tests _
+1 💚 mvninstall 3m 18s the patch passed
+1 💚 compile 0m 27s the patch passed
-0 ⚠️ javac 0m 27s hbase-backup generated 1 new + 102 unchanged - 4 fixed = 103 total (was 106)
+1 💚 checkstyle 0m 10s the patch passed
+1 💚 whitespace 0m 0s The patch has no whitespace issues.
+1 💚 hadoopcheck 6m 23s Patch does not cause any errors with Hadoop 3.3.6.
+1 💚 spotless 1m 3s patch has no errors when running spotless:check.
+1 💚 spotbugs 0m 57s the patch passed
_ Other Tests _
+1 💚 asflicense 0m 14s The patch does not generate ASF License warnings.
27m 29s
Subsystem Report/Notes
Docker ClientAPI=1.45 ServerAPI=1.45 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/4/artifact/yetus-general-check/output/Dockerfile
GITHUB PR #5868
Optional Tests dupname asflicense javac spotbugs hadoopcheck hbaseanti spotless checkstyle compile
uname Linux 94ca3d66f4af 5.4.0-174-generic #193-Ubuntu SMP Thu Mar 7 14:29:28 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/hbase-personality.sh
git revision master / ad88ed3
Default Java Eclipse Adoptium-11.0.17+8
javac https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/4/artifact/yetus-general-check/output/diff-compile-javac-hbase-backup.txt
Max. process+thread count 79 (vs. ulimit of 30000)
modules C: hbase-backup U: hbase-backup
Console output https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/4/console
versions git=2.34.1 maven=3.8.6 spotbugs=4.7.3
Powered by Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase
Copy link

🎊 +1 overall

Vote Subsystem Runtime Comment
+0 🆗 reexec 0m 13s Docker mode activated.
-0 ⚠️ yetus 0m 2s Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck
_ Prechecks _
_ master Compile Tests _
+1 💚 mvninstall 2m 49s master passed
+1 💚 compile 0m 19s master passed
+1 💚 shadedjars 5m 16s branch has no errors when building our shaded downstream artifacts.
+1 💚 javadoc 0m 15s master passed
_ Patch Compile Tests _
+1 💚 mvninstall 2m 49s the patch passed
+1 💚 compile 0m 19s the patch passed
+1 💚 javac 0m 19s the patch passed
+1 💚 shadedjars 5m 17s patch has no errors when building our shaded downstream artifacts.
+1 💚 javadoc 0m 15s the patch passed
_ Other Tests _
+1 💚 unit 12m 21s hbase-backup in the patch passed.
30m 44s
Subsystem Report/Notes
Docker ClientAPI=1.45 ServerAPI=1.45 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/4/artifact/yetus-jdk11-hadoop3-check/output/Dockerfile
GITHUB PR #5868
Optional Tests javac javadoc unit shadedjars compile
uname Linux f3c1d9a38978 5.4.0-172-generic #190-Ubuntu SMP Fri Feb 2 23:24:22 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/hbase-personality.sh
git revision master / ad88ed3
Default Java Eclipse Adoptium-11.0.17+8
Test Results https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/4/testReport/
Max. process+thread count 3874 (vs. ulimit of 30000)
modules C: hbase-backup U: hbase-backup
Console output https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/4/console
versions git=2.34.1 maven=3.8.6
Powered by Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase
Copy link

🎊 +1 overall

Vote Subsystem Runtime Comment
+0 🆗 reexec 0m 32s Docker mode activated.
-0 ⚠️ yetus 0m 3s Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck
_ Prechecks _
_ master Compile Tests _
+1 💚 mvninstall 3m 33s master passed
+1 💚 compile 0m 16s master passed
+1 💚 shadedjars 5m 34s branch has no errors when building our shaded downstream artifacts.
+1 💚 javadoc 0m 12s master passed
_ Patch Compile Tests _
+1 💚 mvninstall 2m 53s the patch passed
+1 💚 compile 0m 16s the patch passed
+1 💚 javac 0m 16s the patch passed
+1 💚 shadedjars 5m 33s patch has no errors when building our shaded downstream artifacts.
+1 💚 javadoc 0m 12s the patch passed
_ Other Tests _
+1 💚 unit 11m 36s hbase-backup in the patch passed.
31m 33s
Subsystem Report/Notes
Docker ClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/4/artifact/yetus-jdk17-hadoop3-check/output/Dockerfile
GITHUB PR #5868
Optional Tests javac javadoc unit shadedjars compile
uname Linux ee21e13f96c1 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/hbase-personality.sh
git revision master / ad88ed3
Default Java Eclipse Adoptium-17.0.10+7
Test Results https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/4/testReport/
Max. process+thread count 3912 (vs. ulimit of 30000)
modules C: hbase-backup U: hbase-backup
Console output https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/4/console
versions git=2.34.1 maven=3.8.6
Powered by Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase
Copy link

🎊 +1 overall

Vote Subsystem Runtime Comment
+0 🆗 reexec 1m 4s Docker mode activated.
-0 ⚠️ yetus 0m 4s Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck
_ Prechecks _
_ master Compile Tests _
+1 💚 mvninstall 3m 49s master passed
+1 💚 compile 0m 18s master passed
+1 💚 shadedjars 6m 46s branch has no errors when building our shaded downstream artifacts.
+1 💚 javadoc 0m 14s master passed
_ Patch Compile Tests _
+1 💚 mvninstall 3m 13s the patch passed
+1 💚 compile 0m 18s the patch passed
+1 💚 javac 0m 18s the patch passed
+1 💚 shadedjars 5m 50s patch has no errors when building our shaded downstream artifacts.
+1 💚 javadoc 0m 13s the patch passed
_ Other Tests _
+1 💚 unit 13m 10s hbase-backup in the patch passed.
35m 54s
Subsystem Report/Notes
Docker ClientAPI=1.45 ServerAPI=1.45 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/4/artifact/yetus-jdk8-hadoop3-check/output/Dockerfile
GITHUB PR #5868
Optional Tests javac javadoc unit shadedjars compile
uname Linux 7adf563efce7 5.4.0-174-generic #193-Ubuntu SMP Thu Mar 7 14:29:28 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/hbase-personality.sh
git revision master / ad88ed3
Default Java Temurin-1.8.0_352-b08
Test Results https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/4/testReport/
Max. process+thread count 3124 (vs. ulimit of 30000)
modules C: hbase-backup U: hbase-backup
Console output https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/4/console
versions git=2.34.1 maven=3.8.6
Powered by Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

Copy link
Member

@ndimiduk ndimiduk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me. Please fixup the new javac warning and we're good to go.

return Collections.emptyList();
}

List<BackupImage> ancestors = new ArrayList<>();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should the ancestors be a Set so that we don't end up with multiple entries for the same ancestor?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't see a need for it. Since we're iterating over a list of unique possible ancestors, we can't end up with duplicates.

Set<TableName> tablesToCover = new HashSet<>(backupInfo.getTables());

// Go over the backup history list in descending order (newest to oldest)
List<BackupInfo> allHistoryList = backupManager.getBackupHistory(true);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this getBackupHistory() method support filters? Could we reduce the search space for applicable backups before entering this loop?

// 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)) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rmdmattingly do we need to add your new unit test someplace?

@DieterDP-ng
Copy link
Contributor Author

Requested changes applied.

@Apache-HBase
Copy link

🎊 +1 overall

Vote Subsystem Runtime Comment
+0 🆗 reexec 0m 22s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+1 💚 hbaseanti 0m 0s Patch does not have any anti-patterns.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
_ master Compile Tests _
+1 💚 mvninstall 3m 8s master passed
+1 💚 compile 0m 25s master passed
+1 💚 checkstyle 0m 9s master passed
+1 💚 spotless 0m 45s branch has no errors when running spotless:check.
+1 💚 spotbugs 0m 30s master passed
_ Patch Compile Tests _
+1 💚 mvninstall 2m 48s the patch passed
+1 💚 compile 0m 23s the patch passed
+1 💚 javac 0m 23s hbase-backup generated 0 new + 100 unchanged - 4 fixed = 100 total (was 104)
+1 💚 checkstyle 0m 8s the patch passed
+1 💚 whitespace 0m 0s The patch has no whitespace issues.
+1 💚 hadoopcheck 5m 20s Patch does not cause any errors with Hadoop 3.3.6.
+1 💚 spotless 0m 43s patch has no errors when running spotless:check.
+1 💚 spotbugs 0m 37s the patch passed
_ Other Tests _
+1 💚 asflicense 0m 9s The patch does not generate ASF License warnings.
22m 13s
Subsystem Report/Notes
Docker ClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/5/artifact/yetus-general-check/output/Dockerfile
GITHUB PR #5868
Optional Tests dupname asflicense javac spotbugs hadoopcheck hbaseanti spotless checkstyle compile
uname Linux 8e70d2bc38af 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/hbase-personality.sh
git revision master / cd0b29c
Default Java Eclipse Adoptium-11.0.17+8
Max. process+thread count 80 (vs. ulimit of 30000)
modules C: hbase-backup U: hbase-backup
Console output https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/5/console
versions git=2.34.1 maven=3.8.6 spotbugs=4.7.3
Powered by Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase
Copy link

🎊 +1 overall

Vote Subsystem Runtime Comment
+0 🆗 reexec 0m 26s Docker mode activated.
-0 ⚠️ yetus 0m 3s Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck
_ Prechecks _
_ master Compile Tests _
+1 💚 mvninstall 3m 17s master passed
+1 💚 compile 0m 17s master passed
+1 💚 shadedjars 5m 59s branch has no errors when building our shaded downstream artifacts.
+1 💚 javadoc 0m 15s master passed
_ Patch Compile Tests _
+1 💚 mvninstall 3m 6s the patch passed
+1 💚 compile 0m 16s the patch passed
+1 💚 javac 0m 16s the patch passed
+1 💚 shadedjars 5m 53s patch has no errors when building our shaded downstream artifacts.
+1 💚 javadoc 0m 13s the patch passed
_ Other Tests _
+1 💚 unit 11m 18s hbase-backup in the patch passed.
32m 1s
Subsystem Report/Notes
Docker ClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/5/artifact/yetus-jdk11-hadoop3-check/output/Dockerfile
GITHUB PR #5868
Optional Tests javac javadoc unit shadedjars compile
uname Linux bd0f8a168d24 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/hbase-personality.sh
git revision master / cd0b29c
Default Java Eclipse Adoptium-11.0.17+8
Test Results https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/5/testReport/
Max. process+thread count 3820 (vs. ulimit of 30000)
modules C: hbase-backup U: hbase-backup
Console output https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/5/console
versions git=2.34.1 maven=3.8.6
Powered by Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase
Copy link

🎊 +1 overall

Vote Subsystem Runtime Comment
+0 🆗 reexec 0m 20s Docker mode activated.
-0 ⚠️ yetus 0m 4s Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck
_ Prechecks _
_ master Compile Tests _
+1 💚 mvninstall 3m 58s master passed
+1 💚 compile 0m 28s master passed
+1 💚 shadedjars 7m 7s branch has no errors when building our shaded downstream artifacts.
+1 💚 javadoc 0m 17s master passed
_ Patch Compile Tests _
+1 💚 mvninstall 2m 38s the patch passed
+1 💚 compile 0m 25s the patch passed
+1 💚 javac 0m 25s the patch passed
+1 💚 shadedjars 6m 3s patch has no errors when building our shaded downstream artifacts.
+1 💚 javadoc 0m 13s the patch passed
_ Other Tests _
+1 💚 unit 11m 48s hbase-backup in the patch passed.
34m 24s
Subsystem Report/Notes
Docker ClientAPI=1.45 ServerAPI=1.45 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/5/artifact/yetus-jdk8-hadoop3-check/output/Dockerfile
GITHUB PR #5868
Optional Tests javac javadoc unit shadedjars compile
uname Linux c40e3c5b082f 5.4.0-182-generic #202-Ubuntu SMP Fri Apr 26 12:29:36 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/hbase-personality.sh
git revision master / cd0b29c
Default Java Temurin-1.8.0_352-b08
Test Results https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/5/testReport/
Max. process+thread count 2820 (vs. ulimit of 30000)
modules C: hbase-backup U: hbase-backup
Console output https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/5/console
versions git=2.34.1 maven=3.8.6
Powered by Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase
Copy link

🎊 +1 overall

Vote Subsystem Runtime Comment
+0 🆗 reexec 0m 43s Docker mode activated.
-0 ⚠️ yetus 0m 3s Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck
_ Prechecks _
_ master Compile Tests _
+1 💚 mvninstall 4m 46s master passed
+1 💚 compile 0m 36s master passed
+1 💚 shadedjars 7m 49s branch has no errors when building our shaded downstream artifacts.
+1 💚 javadoc 0m 19s master passed
_ Patch Compile Tests _
+1 💚 mvninstall 4m 6s the patch passed
+1 💚 compile 0m 25s the patch passed
+1 💚 javac 0m 25s the patch passed
+1 💚 shadedjars 6m 57s patch has no errors when building our shaded downstream artifacts.
+1 💚 javadoc 0m 17s the patch passed
_ Other Tests _
+1 💚 unit 12m 29s hbase-backup in the patch passed.
39m 37s
Subsystem Report/Notes
Docker ClientAPI=1.45 ServerAPI=1.45 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/5/artifact/yetus-jdk17-hadoop3-check/output/Dockerfile
GITHUB PR #5868
Optional Tests javac javadoc unit shadedjars compile
uname Linux aeeb4da8ee70 5.4.0-174-generic #193-Ubuntu SMP Thu Mar 7 14:29:28 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/hbase-personality.sh
git revision master / cd0b29c
Default Java Eclipse Adoptium-17.0.10+7
Test Results https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/5/testReport/
Max. process+thread count 3226 (vs. ulimit of 30000)
modules C: hbase-backup U: hbase-backup
Console output https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/5/console
versions git=2.34.1 maven=3.8.6
Powered by Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@Apache9
Copy link
Contributor

Apache9 commented Jun 5, 2024

Ping @bbeaudreault . I think this should be merged so we can start releasing 2.6.1?

Thanks.

@bbeaudreault
Copy link
Contributor

bbeaudreault commented Jun 5, 2024

Thanks for the ping @Apache9. It looks like this is ready, but I've asked @rmdmattingly and @ndimiduk to take one more look and handle committing if it's working for us internally.

In terms of 2.6.1, I want to make sure we've fixed as many of the known issues as we can. I've asked @rmdmattingly to compile a list of jiras that we're working on internally. Once I have those I'll setup fixVersions/blockers in jira so that we can track progress towards release.

@bbeaudreault
Copy link
Contributor

In fact I'm going to send an email to the dev list so that @DieterDP-ng and his team can also list any jiras we want to try to get into that release.

@ndimiduk ndimiduk merged commit 04816d9 into apache:master Jun 6, 2024
1 check passed
ndimiduk pushed a commit to ndimiduk/hbase that referenced this pull request Jun 6, 2024
The ancestor calculation was wrong for incremental backups:
when requesting the ancestors for an incremental backup X,
the ancestors could include both full and incremental backups
that predate the full backup on which X is built.

This caused a crash in incremental backup creation when data
of old incremental backups was deleted through other means than
the HBase API (i.e. without the HBase backup system table being
updated).

Reviewed-by: Ray Mattingly <rmdmattingly@gmail.com>
Signed-off-by: Nick Dimiduk <ndimiduk@apache.org>
ndimiduk pushed a commit to ndimiduk/hbase that referenced this pull request Jun 6, 2024
The ancestor calculation was wrong for incremental backups:
when requesting the ancestors for an incremental backup X,
the ancestors could include both full and incremental backups
that predate the full backup on which X is built.

This caused a crash in incremental backup creation when data
of old incremental backups was deleted through other means than
the HBase API (i.e. without the HBase backup system table being
updated).

Reviewed-by: Ray Mattingly <rmdmattingly@gmail.com>
Signed-off-by: Nick Dimiduk <ndimiduk@apache.org>
ndimiduk pushed a commit to ndimiduk/hbase that referenced this pull request Jun 6, 2024
The ancestor calculation was wrong for incremental backups:
when requesting the ancestors for an incremental backup X,
the ancestors could include both full and incremental backups
that predate the full backup on which X is built.

This caused a crash in incremental backup creation when data
of old incremental backups was deleted through other means than
the HBase API (i.e. without the HBase backup system table being
updated).

Reviewed-by: Ray Mattingly <rmdmattingly@gmail.com>
Signed-off-by: Nick Dimiduk <ndimiduk@apache.org>
ndimiduk pushed a commit that referenced this pull request Jun 6, 2024
The ancestor calculation was wrong for incremental backups:
when requesting the ancestors for an incremental backup X,
the ancestors could include both full and incremental backups
that predate the full backup on which X is built.

This caused a crash in incremental backup creation when data
of old incremental backups was deleted through other means than
the HBase API (i.e. without the HBase backup system table being
updated).

Reviewed-by: Ray Mattingly <rmdmattingly@gmail.com>
Signed-off-by: Nick Dimiduk <ndimiduk@apache.org>
ndimiduk pushed a commit that referenced this pull request Jun 6, 2024
The ancestor calculation was wrong for incremental backups:
when requesting the ancestors for an incremental backup X,
the ancestors could include both full and incremental backups
that predate the full backup on which X is built.

This caused a crash in incremental backup creation when data
of old incremental backups was deleted through other means than
the HBase API (i.e. without the HBase backup system table being
updated).

Reviewed-by: Ray Mattingly <rmdmattingly@gmail.com>
Signed-off-by: Nick Dimiduk <ndimiduk@apache.org>
ndimiduk pushed a commit that referenced this pull request Jun 6, 2024
The ancestor calculation was wrong for incremental backups:
when requesting the ancestors for an incremental backup X,
the ancestors could include both full and incremental backups
that predate the full backup on which X is built.

This caused a crash in incremental backup creation when data
of old incremental backups was deleted through other means than
the HBase API (i.e. without the HBase backup system table being
updated).

Reviewed-by: Ray Mattingly <rmdmattingly@gmail.com>
Signed-off-by: Nick Dimiduk <ndimiduk@apache.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants