A small point release: one fix to how BBS decides a client's backup has died, plus manual download and on-demand runs for server backups.
Backups no longer restart because a client is busy (#404)
A client was marked offline after three missed polls — 90 seconds by default — and every backup it had running was failed on the spot and re-queued. That threshold is shorter than the agent's own 60-second HTTP timeout, so a single stalled request was enough to trip it while borg was still working normally.
The retry then dispatched the moment the client reconnected, restarting a backup that may have been running for hours. On a plan with millions of files that restart is itself a heavy load, on a machine that was already short of CPU — which caused the next missed poll, and the next retry. One large backup on a busy host could turn into a day of them, and the repeated runs collided on the repository lock, taking unrelated plans down with them.
A running job now has to look dead before it is failed: the client silent for a grace period and no progress reported during it. Progress reports refresh the heartbeat, so a backup that is merely slow keeps itself alive. Clients still show offline immediately — this only governs when BBS kills their work.
Retries also back off now — five minutes, doubling, capped at an hour — rather than dispatching immediately. And after three consecutive attempts BBS says what the pattern actually means: repeated offline-retries point at a client running out of CPU, memory or I/O rather than losing its network, and each retry adds to that load.
Two new settings under Settings → Backups cover installs with very large backups or slow links: Give Up On Running Jobs After (default 5 minutes) and Retry Backoff (default 5 minutes).
Thanks to @henfri for the report — the retry chain, load figures and PSI data made this one straightforward to trace.
Server backups: keep a copy, or take one now
The off-site backup list could restore a backup onto the server but not hand you the file, so keeping a copy of your own meant fetching it by hand. Backup filenames in the list are now download links, with a Download button beside Restore. Downloads stream through the browser's own downloader, so progress, resume and "save as" all work and a large backup never sits in memory.
Back Up Now takes a server backup immediately — worth doing before an upgrade or a configuration change rather than waiting for the daily window — and uploads it when off-site sync is enabled. It runs the same code as the scheduled backup, so the two can't drift apart.
Notes
- The agent is unchanged in this release; clients on 2.79.0 do not need to update.
- Adds one database migration.