Skip to content

HBASE-28562 Correct backup ancestor calculation - #5868

Merged
ndimiduk merged 5 commits into
apache:masterfrom
DieterDP-ng:Hbase-28562_Backup_ancestor_location
Jun 6, 2024
Merged

HBASE-28562 Correct backup ancestor calculation#5868
ndimiduk merged 5 commits into
apache:masterfrom
DieterDP-ng:Hbase-28562_Backup_ancestor_location

Conversation

@DieterDP-ng

Copy link
Copy Markdown
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
Copy Markdown
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
Copy Markdown
ContributorAuthor

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
Copy Markdown
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
Copy Markdown
ContributorAuthor

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
Copy Markdown
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
Copy Markdown
ContributorAuthor

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
Copy Markdown
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
Copy Markdown
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 correctassertEquals(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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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

@rmdmattinglyrmdmattinglyMay 3, 2024

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
ContributorAuthor

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
Copy Markdown
ContributorAuthor

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
Copy Markdown
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.

@rmdmattinglyrmdmattingly left a comment

Copy link
Copy Markdown
Contributor

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
Copy Markdown
ContributorAuthor

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
Copy Markdown
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-ngforce-pushed the Hbase-28562_Backup_ancestor_location branch from 54174b3 to 3e8f2e9CompareMay 15, 2024 21:00
@DieterDP-ng

Copy link
Copy Markdown
ContributorAuthor

@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
Copy Markdown

🎊 +1 overall

VoteSubsystemRuntimeComment
+0 🆗reexec1m 5sDocker mode activated.
_ Prechecks _
+1 💚dupname0m 0sNo case conflicting files found.
+1 💚hbaseanti0m 0sPatch does not have any anti-patterns.
+1 💚@author0m 0sThe patch does not contain any @author tags.
_ master Compile Tests _
+1 💚mvninstall4m 16smaster passed
+1 💚compile0m 37smaster passed
+1 💚checkstyle0m 12smaster passed
+1 💚spotless0m 53sbranch has no errors when running spotless:check.
+1 💚spotbugs0m 37smaster passed
_ Patch Compile Tests _
+1 💚mvninstall3m 18sthe patch passed
+1 💚compile0m 27sthe patch passed
-0 ⚠️javac0m 27shbase-backup generated 1 new + 102 unchanged - 4 fixed = 103 total (was 106)
+1 💚checkstyle0m 10sthe patch passed
+1 💚whitespace0m 0sThe patch has no whitespace issues.
+1 💚hadoopcheck6m 23sPatch does not cause any errors with Hadoop 3.3.6.
+1 💚spotless1m 3spatch has no errors when running spotless:check.
+1 💚spotbugs0m 57sthe patch passed
_ Other Tests _
+1 💚asflicense0m 14sThe patch does not generate ASF License warnings.
27m 29s
SubsystemReport/Notes
DockerClientAPI=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 Testsdupname asflicense javac spotbugs hadoopcheck hbaseanti spotless checkstyle compile
unameLinux 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 toolmaven
Personalitydev-support/hbase-personality.sh
git revisionmaster / ad88ed3
Default JavaEclipse Adoptium-11.0.17+8
javachttps://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 count79 (vs. ulimit of 30000)
modulesC: hbase-backup U: hbase-backup
Console outputhttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/4/console
versionsgit=2.34.1 maven=3.8.6 spotbugs=4.7.3
Powered byApache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase

Copy link
Copy Markdown

🎊 +1 overall

VoteSubsystemRuntimeComment
+0 🆗reexec0m 13sDocker mode activated.
-0 ⚠️yetus0m 2sUnprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck
_ Prechecks _
_ master Compile Tests _
+1 💚mvninstall2m 49smaster passed
+1 💚compile0m 19smaster passed
+1 💚shadedjars5m 16sbranch has no errors when building our shaded downstream artifacts.
+1 💚javadoc0m 15smaster passed
_ Patch Compile Tests _
+1 💚mvninstall2m 49sthe patch passed
+1 💚compile0m 19sthe patch passed
+1 💚javac0m 19sthe patch passed
+1 💚shadedjars5m 17spatch has no errors when building our shaded downstream artifacts.
+1 💚javadoc0m 15sthe patch passed
_ Other Tests _
+1 💚unit12m 21shbase-backup in the patch passed.
30m 44s
SubsystemReport/Notes
DockerClientAPI=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 Testsjavac javadoc unit shadedjars compile
unameLinux 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 toolmaven
Personalitydev-support/hbase-personality.sh
git revisionmaster / ad88ed3
Default JavaEclipse Adoptium-11.0.17+8
Test Resultshttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/4/testReport/
Max. process+thread count3874 (vs. ulimit of 30000)
modulesC: hbase-backup U: hbase-backup
Console outputhttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/4/console
versionsgit=2.34.1 maven=3.8.6
Powered byApache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase

Copy link
Copy Markdown

🎊 +1 overall

VoteSubsystemRuntimeComment
+0 🆗reexec0m 32sDocker mode activated.
-0 ⚠️yetus0m 3sUnprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck
_ Prechecks _
_ master Compile Tests _
+1 💚mvninstall3m 33smaster passed
+1 💚compile0m 16smaster passed
+1 💚shadedjars5m 34sbranch has no errors when building our shaded downstream artifacts.
+1 💚javadoc0m 12smaster passed
_ Patch Compile Tests _
+1 💚mvninstall2m 53sthe patch passed
+1 💚compile0m 16sthe patch passed
+1 💚javac0m 16sthe patch passed
+1 💚shadedjars5m 33spatch has no errors when building our shaded downstream artifacts.
+1 💚javadoc0m 12sthe patch passed
_ Other Tests _
+1 💚unit11m 36shbase-backup in the patch passed.
31m 33s
SubsystemReport/Notes
DockerClientAPI=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 Testsjavac javadoc unit shadedjars compile
unameLinux 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 toolmaven
Personalitydev-support/hbase-personality.sh
git revisionmaster / ad88ed3
Default JavaEclipse Adoptium-17.0.10+7
Test Resultshttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/4/testReport/
Max. process+thread count3912 (vs. ulimit of 30000)
modulesC: hbase-backup U: hbase-backup
Console outputhttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/4/console
versionsgit=2.34.1 maven=3.8.6
Powered byApache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase

Copy link
Copy Markdown

🎊 +1 overall

VoteSubsystemRuntimeComment
+0 🆗reexec1m 4sDocker mode activated.
-0 ⚠️yetus0m 4sUnprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck
_ Prechecks _
_ master Compile Tests _
+1 💚mvninstall3m 49smaster passed
+1 💚compile0m 18smaster passed
+1 💚shadedjars6m 46sbranch has no errors when building our shaded downstream artifacts.
+1 💚javadoc0m 14smaster passed
_ Patch Compile Tests _
+1 💚mvninstall3m 13sthe patch passed
+1 💚compile0m 18sthe patch passed
+1 💚javac0m 18sthe patch passed
+1 💚shadedjars5m 50spatch has no errors when building our shaded downstream artifacts.
+1 💚javadoc0m 13sthe patch passed
_ Other Tests _
+1 💚unit13m 10shbase-backup in the patch passed.
35m 54s
SubsystemReport/Notes
DockerClientAPI=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 Testsjavac javadoc unit shadedjars compile
unameLinux 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 toolmaven
Personalitydev-support/hbase-personality.sh
git revisionmaster / ad88ed3
Default JavaTemurin-1.8.0_352-b08
Test Resultshttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/4/testReport/
Max. process+thread count3124 (vs. ulimit of 30000)
modulesC: hbase-backup U: hbase-backup
Console outputhttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/4/console
versionsgit=2.34.1 maven=3.8.6
Powered byApache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@ndimidukndimiduk left a comment

Copy link
Copy Markdown
Member

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
Copy Markdown
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
Copy Markdown
ContributorAuthor

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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
ContributorAuthor

Requested changes applied.

@Apache-HBase

Copy link
Copy Markdown

🎊 +1 overall

VoteSubsystemRuntimeComment
+0 🆗reexec0m 22sDocker mode activated.
_ Prechecks _
+1 💚dupname0m 0sNo case conflicting files found.
+1 💚hbaseanti0m 0sPatch does not have any anti-patterns.
+1 💚@author0m 0sThe patch does not contain any @author tags.
_ master Compile Tests _
+1 💚mvninstall3m 8smaster passed
+1 💚compile0m 25smaster passed
+1 💚checkstyle0m 9smaster passed
+1 💚spotless0m 45sbranch has no errors when running spotless:check.
+1 💚spotbugs0m 30smaster passed
_ Patch Compile Tests _
+1 💚mvninstall2m 48sthe patch passed
+1 💚compile0m 23sthe patch passed
+1 💚javac0m 23shbase-backup generated 0 new + 100 unchanged - 4 fixed = 100 total (was 104)
+1 💚checkstyle0m 8sthe patch passed
+1 💚whitespace0m 0sThe patch has no whitespace issues.
+1 💚hadoopcheck5m 20sPatch does not cause any errors with Hadoop 3.3.6.
+1 💚spotless0m 43spatch has no errors when running spotless:check.
+1 💚spotbugs0m 37sthe patch passed
_ Other Tests _
+1 💚asflicense0m 9sThe patch does not generate ASF License warnings.
22m 13s
SubsystemReport/Notes
DockerClientAPI=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 Testsdupname asflicense javac spotbugs hadoopcheck hbaseanti spotless checkstyle compile
unameLinux 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 toolmaven
Personalitydev-support/hbase-personality.sh
git revisionmaster / cd0b29c
Default JavaEclipse Adoptium-11.0.17+8
Max. process+thread count80 (vs. ulimit of 30000)
modulesC: hbase-backup U: hbase-backup
Console outputhttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/5/console
versionsgit=2.34.1 maven=3.8.6 spotbugs=4.7.3
Powered byApache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase

Copy link
Copy Markdown

🎊 +1 overall

VoteSubsystemRuntimeComment
+0 🆗reexec0m 26sDocker mode activated.
-0 ⚠️yetus0m 3sUnprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck
_ Prechecks _
_ master Compile Tests _
+1 💚mvninstall3m 17smaster passed
+1 💚compile0m 17smaster passed
+1 💚shadedjars5m 59sbranch has no errors when building our shaded downstream artifacts.
+1 💚javadoc0m 15smaster passed
_ Patch Compile Tests _
+1 💚mvninstall3m 6sthe patch passed
+1 💚compile0m 16sthe patch passed
+1 💚javac0m 16sthe patch passed
+1 💚shadedjars5m 53spatch has no errors when building our shaded downstream artifacts.
+1 💚javadoc0m 13sthe patch passed
_ Other Tests _
+1 💚unit11m 18shbase-backup in the patch passed.
32m 1s
SubsystemReport/Notes
DockerClientAPI=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 Testsjavac javadoc unit shadedjars compile
unameLinux 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 toolmaven
Personalitydev-support/hbase-personality.sh
git revisionmaster / cd0b29c
Default JavaEclipse Adoptium-11.0.17+8
Test Resultshttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/5/testReport/
Max. process+thread count3820 (vs. ulimit of 30000)
modulesC: hbase-backup U: hbase-backup
Console outputhttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/5/console
versionsgit=2.34.1 maven=3.8.6
Powered byApache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase

Copy link
Copy Markdown

🎊 +1 overall

VoteSubsystemRuntimeComment
+0 🆗reexec0m 20sDocker mode activated.
-0 ⚠️yetus0m 4sUnprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck
_ Prechecks _
_ master Compile Tests _
+1 💚mvninstall3m 58smaster passed
+1 💚compile0m 28smaster passed
+1 💚shadedjars7m 7sbranch has no errors when building our shaded downstream artifacts.
+1 💚javadoc0m 17smaster passed
_ Patch Compile Tests _
+1 💚mvninstall2m 38sthe patch passed
+1 💚compile0m 25sthe patch passed
+1 💚javac0m 25sthe patch passed
+1 💚shadedjars6m 3spatch has no errors when building our shaded downstream artifacts.
+1 💚javadoc0m 13sthe patch passed
_ Other Tests _
+1 💚unit11m 48shbase-backup in the patch passed.
34m 24s
SubsystemReport/Notes
DockerClientAPI=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 Testsjavac javadoc unit shadedjars compile
unameLinux 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 toolmaven
Personalitydev-support/hbase-personality.sh
git revisionmaster / cd0b29c
Default JavaTemurin-1.8.0_352-b08
Test Resultshttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/5/testReport/
Max. process+thread count2820 (vs. ulimit of 30000)
modulesC: hbase-backup U: hbase-backup
Console outputhttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/5/console
versionsgit=2.34.1 maven=3.8.6
Powered byApache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase

Copy link
Copy Markdown

🎊 +1 overall

VoteSubsystemRuntimeComment
+0 🆗reexec0m 43sDocker mode activated.
-0 ⚠️yetus0m 3sUnprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck
_ Prechecks _
_ master Compile Tests _
+1 💚mvninstall4m 46smaster passed
+1 💚compile0m 36smaster passed
+1 💚shadedjars7m 49sbranch has no errors when building our shaded downstream artifacts.
+1 💚javadoc0m 19smaster passed
_ Patch Compile Tests _
+1 💚mvninstall4m 6sthe patch passed
+1 💚compile0m 25sthe patch passed
+1 💚javac0m 25sthe patch passed
+1 💚shadedjars6m 57spatch has no errors when building our shaded downstream artifacts.
+1 💚javadoc0m 17sthe patch passed
_ Other Tests _
+1 💚unit12m 29shbase-backup in the patch passed.
39m 37s
SubsystemReport/Notes
DockerClientAPI=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 Testsjavac javadoc unit shadedjars compile
unameLinux 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 toolmaven
Personalitydev-support/hbase-personality.sh
git revisionmaster / cd0b29c
Default JavaEclipse Adoptium-17.0.10+7
Test Resultshttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/5/testReport/
Max. process+thread count3226 (vs. ulimit of 30000)
modulesC: hbase-backup U: hbase-backup
Console outputhttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5868/5/console
versionsgit=2.34.1 maven=3.8.6
Powered byApache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@Apache9

Copy link
Copy Markdown
Contributor

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

Thanks.

@bbeaudreault

bbeaudreault commented Jun 5, 2024

Copy link
Copy Markdown
Contributor

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
Copy Markdown
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:masterJun 6, 2024
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>
hgromer pushed a commit to HubSpot/hbase that referenced this pull request Feb 3, 2025
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>
hgromer added a commit to HubSpot/hbase that referenced this pull request Feb 3, 2025
Sign up for freeto 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

@DieterDP-ng@Apache-HBase@rmdmattingly@Apache9@bbeaudreault@ndimiduk