Skip to content

backup: correct the target_not_empty rule, the store root ancestor rule and a remove-target pointer #942

Open

Description

@LeeroyHannigan

Some backup texts on main state rules that the code does not follow. #897 makes the same corrections in the upgrade manual.

When a restore fails as target_not_empty

The reconciler fails a store-backed restore with no recorded progress as target_not_empty only when the target holds more items than the backup's item_count (exceeds_backup_total in crates/engine/src/backup/reconciler.rs). At or below that count, the takeover arm resumes the restore and applies the first data file again. While a backup command holds the maintenance claim, the reconciler fails such a restore as OWNER_DEAD and removes its target.

These texts say otherwise:

  • crates/engine/src/backup/maintenance.rs, module doc, lines 39 to 43: on MongoDB and Cassandra, a crash before the first progress record ends in target_not_empty.
  • crates/app/src/cmd_backup.rs, module doc, lines 118 to 121: the same claim.
  • crates/app/src/cmd_backup.rs lines 76 to 78: a record with no recorded progress over a target that holds items fails as target_not_empty. The code requires more items than the backup holds.
  • crates/engine/src/backup/reconciler.rs lines 71 to 74 and 822 to 824: the same statement.

The directories above a filesystem root

crates/backup-store/src/fs.rs refuses an ancestor directory that group or others can write to, unless the directory carries the sticky bit. These texts name only others and leave out the sticky bit:

  • docs/manuals/05-admin-guide.md line 168: "sit under directories owned by root or that user which others cannot write to".
  • The default-root warning in crates/server/src/backup_store.rs (warn_default_root_unusable): "under directories owned by root or this user that others cannot write to".

docs/manuals/14-backup-and-restore.md states the rule as the code applies it.

The remove-target pointer

docs/manuals/14-backup-and-restore.md lines 479 and 480 send the reader to "the admin guide's backup section" for extenddb backup remove-target. The admin guide has no such section. It describes the command in its [backup.store] section.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions