Adds RETRY_ATTEMPTS (3..=5, default 3) and RETRY_BACKOFF_MS
(100..=30000, default 1000) to Settings, validated with the same
panic-on-invalid contract as POOLING and CHUNK_SIZE_MB.
The combinator logs every failed attempt and any late success through
the JobLogger it borrows, so retries reach the server on the existing
job-log path with no API change. It borrows rather than clones the Arc
so Arc::try_unwrap in the backup executor keeps working. Backoff is
exponential with equal jitter, because the uploader retries storages
concurrently and would otherwise retry them in lockstep.
* fix: refactoring
* chore: add google-cloud-storage and google-cloud-auth deps
* feat: add GCS provider config model
* feat: add GCS credential, client, and stream-source helpers
StreamSource bridges build_stream's Send-only byte stream into the SDK's
StreamingSource (which send_buffered requires to be Send+Sync+'static) via a
bounded mpsc channel, avoiding any change to the shared UploadStream type.
* feat: implement GCS StorageProvider upload
* feat: register google-cloud-storage provider in factory
* test: GCS upload roundtrip against fake-gcs-server
* fix: format GCS bucket as projects/_/buckets/<name> in upload_with_client
write_object rejects the bare bucket id with "malformed bucket name"; the
production provider passed config.bucket_name unformatted, so real uploads
would always fail. Format once in upload_with_client so prod and the
fake-gcs-server test share the corrected path.
* style: cargo fmt GCS provider files
* fix: gcs
* fix: s3 port type mismatch, add string_or_number_to_string deserializer
* chore: docker-compose.databases.yml
* fix: tests and refactoring, add justfile instead of makefile
* fix: restoration process for postgres/mysql and mariadb
* fix: restoration process for postgres/mysql and mariadb
* fix: postgres restore
* fix: mariadb/mysql restore, added backticks to drop command
* fix: mongodb and migration test for firebird
* fix: docker-compose.yml
---------
Co-authored-by: charlesgauthereau <charles.gauthereau@soluce-technologies.com>
* fix: s3 port type mismatch, add string_or_number_to_string deserializer
* fix: adding some tests
* fix: adding some tests
* fix: working on pipeline
* fix: working on pipeline
* fix: working on pipeline
* fix: working on pipeline
* fix: working on pipeline
* fix: working on pipeline
* fix: working on pipeline
* fix: working on pipeline
* fix: working on pipeline
* fix: working on pipeline
* fix: working on pipeline
* fix: working on pipeline
* fix: working on pipeline
* fix: working on pipeline
* fix: working on pipeline
* fix: working on pipeline
* fix: working on pipeline
* fix: working on pipeline
* fix: working on pipeline
* fix: working on pipeline
* fix: working on pipeline
* fix: working on pipeline
---------
Co-authored-by: charlesgauthereau <charles.gauthereau@soluce-technologies.com>
* fix: docker-compose.yml
* fix: refactoring for backup and restore service
* fix: cargo update
* fix: refactoring of the backup and restore services
---------
Co-authored-by: charlesgauthereau <charles.gauthereau@soluce-technologies.com>