RevalidateUnusableS3StoragesJob had no uniqueFor. A lock left by a
stopped worker blocked the job for up to 24 hours, so unusable S3
storages were not checked again and their backups were skipped.
- Set uniqueFor to 1800 seconds
- The S3 revalidation job stops within its time budget and continues from a
cursor on the next run.
- An hourly sweep deletes throttle rows whose subject no longer exists.
Re-test S3 storages marked unusable every hour so a storage that becomes
reachable again is usable without manual action. Failures keep the
storage unusable and reuse the existing once-per-outage email.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>