mirror of
https://github.com/Portabase/agent.git
synced 2026-09-10 01:57:10 +00:00
b0da2e40a3f4a099e19d2f4f79559e6a7f651f1c
Each attempt now dumps into its own tmp_path/attempt-{n} directory,
which is removed when the attempt fails. Without the per-attempt
directory pg_dump -Fd would refuse every retry, because it will not
write into a directory a previous attempt left behind; removing it on
failure keeps peak disk at one attempt's artifacts rather than five.
A backup blocked by a concurrent job is retried before surfacing the
same backup_already_in_progress code, since FileLock reports it as an
ordinary error and the combinator cannot tell it apart.
Reshapes retry()'s bound from the native AsyncFnMut sugar to the
classic F: FnMut(u32) -> Fut, Fut: Future<Output = Result<T, E>> + Send
shape (the pattern tokio-retry and backoff both use). AsyncFnMut's
produced future is a lifetime-quantified associated type
(F::CallRefFuture<'_>) that cannot be named or bounded as Send on
stable Rust, so wiring a retried call through it into a future that
eventually gets polled inside tokio::spawn (dispatcher.rs, via
execute_backup) made rustc's opaque-type Send inference fail with
"implementation of Send is not general enough" at the spawn site,
several call layers away from the actual retry call. Naming Fut as its
own type parameter lets Send be asserted on it directly instead, which
resolves cleanly. The combinator's control flow, log messages, and
formats are unchanged; only the bound and the call sites' closure
shape (async |x| { } becomes |x| async { }, with shared references
bound outside a move closure so the inner async move block only moves
Copy references, not the originals) are affected.
Portabase Agent (Rust)
Portabase Agent is use with Portabase Server. This service is for backup/restore db instances. Portabase Server
Website • Documentation • Demo • Installation • Report Bug • Request Feature
Installation
You have 4 ways to install Portabase Agent:
- Automated CLI (recommended) - details
- Docker Compose setup - details
- Kubernetes with Helm details
- Development setup - details
Ensure Docker is installed on your machine before getting started.
Contributors
License
Distributed under the Apache License. See LICENSE.txt for more information.
Description
Agent for the Portabase Server. Database backup & restore tool for PostgreSQL, MsSQL, MySQL/MariaDB, MongoDB, SQLite, Redis, Valkey, Firebird and Docker Volume.
backupdatabase-managementdevopsdockerfirebird-databasefirebirdsqlmariadbmongodbmssql-databasemysqlpostgresqlredisrestorationrestorerustsqlite-databasesqlite3tokio-rsvalkey
Readme
Cite this repository
160 MiB
Languages
Rust
96.9%
Shell
1.3%
Dockerfile
1%
Just
0.7%
TSQL
0.1%
