Summary
The rejoin restore selector + backup catalog can already select a backup from any node / repo / location (local, restic S3/SFTP), and the new catalog-based rejoin states (IsValidRejoinBackupLogical/Physical, WARN0190/0191) correctly report "a backup exists anywhere" — including restic-only backups. But the rejoin action is still local-only, so a remote/restic-only backup is listed and rankable yet never actually fetched/restored.
Where
JobFlashbackLogicalBackup only acts on the selector pick when pick.isLocal() (cluster/srv_job_backup.go, around the pick != nil && pick.isLocal() gate) and otherwise falls back to a legacy local on-disk lookup. Remote (restic) picks are dropped.
Why it matters
Today this is fine because repman's default keeps a local copy: local backup on the repman node + restic snapshot = a double copy (local for fast restore, restic for history/retention). So after a failover the old master still has a local backup and the local-only rejoin works.
But for the restic-S3-only mode (drop the local copy to save NVMe on cloud18), after a failover the only backup anywhere is remote — so the rejoin must fetch from restic, otherwise rejoin-from-backup is impossible in that mode. Most clients keep local backups, so there's time to wire this — but it must land before the S3-only mode ships.
TODO
- Wire restic/remote fetch into the rejoin restore path so a pick with
Location = remote (restic S3/SFTP) is fetched (or FUSE-mounted) and restored, not just listed. Drop the isLocal() gate once remote fetch exists.
- Enumerate all restic snapshots in
buildBackupCatalog() — it currently emits one row per server per kind (the last backup), not the full restic history the S3-only / PITR-depth cases need.
- Classify
Location by actual backend (local restic repo vs S3/SFTP vs S3-FUSE-mount) so the Order:["last","local"] "local" preference means physically fast, not "is a plain file" — a FUSE-mounted S3 backup looks local but is remote; a local restic repo is restic but fast.
Context
Catalog-based rejoin availability landed in commit 0399a5bb7 on branch feature/arbitration-server-authoritative-heartbeat (per-method selectors autorejoin-backup-selector-{logical,physical}, IsValidRejoinBackup{Logical,Physical}, RejoinMethodsStatus() gated on the catalog).
Summary
The rejoin restore selector + backup catalog can already select a backup from any node / repo / location (local, restic S3/SFTP), and the new catalog-based rejoin states (
IsValidRejoinBackupLogical/Physical,WARN0190/0191) correctly report "a backup exists anywhere" — including restic-only backups. But the rejoin action is still local-only, so a remote/restic-only backup is listed and rankable yet never actually fetched/restored.Where
JobFlashbackLogicalBackuponly acts on the selector pick whenpick.isLocal()(cluster/srv_job_backup.go, around thepick != nil && pick.isLocal()gate) and otherwise falls back to a legacy local on-disk lookup. Remote (restic) picks are dropped.Why it matters
Today this is fine because repman's default keeps a local copy: local backup on the repman node + restic snapshot = a double copy (local for fast restore, restic for history/retention). So after a failover the old master still has a local backup and the local-only rejoin works.
But for the restic-S3-only mode (drop the local copy to save NVMe on cloud18), after a failover the only backup anywhere is remote — so the rejoin must fetch from restic, otherwise rejoin-from-backup is impossible in that mode. Most clients keep local backups, so there's time to wire this — but it must land before the S3-only mode ships.
TODO
Location = remote(restic S3/SFTP) is fetched (or FUSE-mounted) and restored, not just listed. Drop theisLocal()gate once remote fetch exists.buildBackupCatalog()— it currently emits one row per server per kind (the last backup), not the full restic history the S3-only / PITR-depth cases need.Locationby actual backend (local restic repo vs S3/SFTP vs S3-FUSE-mount) so theOrder:["last","local"]"local" preference means physically fast, not "is a plain file" — a FUSE-mounted S3 backup looks local but is remote; a local restic repo is restic but fast.Context
Catalog-based rejoin availability landed in commit
0399a5bb7on branchfeature/arbitration-server-authoritative-heartbeat(per-method selectorsautorejoin-backup-selector-{logical,physical},IsValidRejoinBackup{Logical,Physical},RejoinMethodsStatus()gated on the catalog).