feat: Graceful degradation when remote upload fails #66

Closed
opened 2026-06-21 16:51:49 +00:00 by jmiller · 0 comments
Owner

Summary

Currently, if remote upload (S3/FTP/GDrive) fails, the entire backup record is marked as failed even though the local archive was created successfully. The backup should be marked as "complete (upload failed)" with a warning, not as a full failure.

Proposed Behavior

  • Local archive created successfully → record status = complete
  • Remote upload fails → set remote_filename = '', add warning to log, send failure notification for the upload only
  • Add remote_status column: none, success, failed, pending
  • Dashboard shows upload failures as warnings, not backup failures

Why

A local backup that exists is infinitely better than no backup. Failing the entire record because S3 credentials expired means the cleanup system may delete the "failed" local file.

Files

  • src/Engine/BackupEngine.php — separate upload failure from backup failure
  • src/Engine/SteppedBackupEngine.php — same
  • sql/updates/mysql/ — add remote_status column
## Summary Currently, if remote upload (S3/FTP/GDrive) fails, the entire backup record is marked as failed even though the local archive was created successfully. The backup should be marked as "complete (upload failed)" with a warning, not as a full failure. ## Proposed Behavior - Local archive created successfully → record status = `complete` - Remote upload fails → set `remote_filename = ''`, add warning to log, send failure notification for the upload only - Add `remote_status` column: `none`, `success`, `failed`, `pending` - Dashboard shows upload failures as warnings, not backup failures ## Why A local backup that exists is infinitely better than no backup. Failing the entire record because S3 credentials expired means the cleanup system may delete the "failed" local file. ## Files - `src/Engine/BackupEngine.php` — separate upload failure from backup failure - `src/Engine/SteppedBackupEngine.php` — same - `sql/updates/mysql/` — add `remote_status` column
jmiller added the component: enginecomponent: remote labels 2026-06-21 16:51:49 +00:00
Sign in to join this conversation.
Priority Medium
Type Feature
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MokoConsulting/MokoSuiteBackup#66