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

dird: create restore tree caches on backup #1616

Draft
wants to merge 45 commits into
base: master
Choose a base branch
from

Conversation

sebsura
Copy link
Contributor

@sebsura sebsura commented Dec 7, 2023

Thank you for contributing to the Bareos Project!

Building a restore tree by pulling data from the database can be very slow if it contains lots of files. This PR introduces a mechanism by which the director automatically creates a restore tree cache at the end of each backup job. This allows the director to create a restore tree much quicker when needed.

Things that should get added:

  • Versioning
  • Checksumming
  • Automatically compress/decompress the resulting file
  • Add option to disable this behaviour
  • Add "loading animation", like when restoring from database
  • Add documentation

Please check

  • Short description and the purpose of this PR is present above this paragraph
  • Your name is present in the AUTHORS file (optional)

If you have any questions or problems, please give a comment in the PR.

Helpful documentation and best practices

Checklist for the reviewer of the PR (will be processed by the Bareos team)

Make sure you check/merge the PR using devtools/pr-tool to have some simple automated checks run and a proper changelog record added.

General
  • Is the PR title usable as CHANGELOG entry?
  • Purpose of the PR is understood
  • Commit descriptions are understandable and well formatted
  • Check backport line
  • Required backport PRs have been created
Source code quality
  • Source code changes are understandable
  • Variable and function names are meaningful
  • Code comments are correct (logically and spelling)
  • Required documentation changes are present and part of the PR
Tests
  • Decision taken that a test is required (if not, then remove this paragraph)
  • The choice of the type of test (unit test or systemtest) is reasonable
  • Testname matches exactly what is being tested
  • On a fail, output of the test leads quickly to the origin of the fault

Since start is always the next element there is no need to explicitly
save it.  This commit also makes the remaining sub member relative to
the node, i.e. instead of saving the absolute offset into the array,
we instead just save the size of the whole subtree.
They probably should not get saved anyways!
We have to save the information on whether a file is the "original"
file or if its just a "link".  To do that we add the offset to the
original to every hardlinked file so that we can detect the actual
original by checking whether the node points to itself.
We need to ensure to free the build restore tree (if it exists) even
if we decide not to do a restore.
We now use the cache directory from the director configuration.
@sebsura sebsura marked this pull request as draft December 7, 2023 08:37
@pstorz pstorz added the onhold label Jan 11, 2024
@sebsura sebsura self-assigned this Apr 29, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants