[Infra][MinIO] Migrate dlls dir to S3 (dlls bucket, epic #413) #524

Closed
opened 2026-07-13 00:40:40 +00:00 by spikerj · 3 comments
Owner

Parent epic: #413.

Scope: dlls bucket — /mnt/fusionio/spikersoft/dlls. Writers per the bucket map: file-movement, upload-coordinator (both already have AWSSDK.S3 + Storage:UseS3 wiring, so this is mostly extending existing mirrors to a second bucket + config).

Steps: bucket + scoped key → extend FileMovement/UploadCoordinator mirror config for the dlls tree → mc mirror backfill → dual-run → remove bind lines from both stack files (final placement relaxation happens with the uploads batch since both services also touch /app/uploads).

Parent epic: #413. **Scope:** `dlls` bucket — `/mnt/fusionio/spikersoft/dlls`. Writers per the bucket map: file-movement, upload-coordinator (both already have AWSSDK.S3 + `Storage:UseS3` wiring, so this is mostly extending existing mirrors to a second bucket + config). **Steps:** bucket + scoped key → extend `FileMovement`/`UploadCoordinator` mirror config for the dlls tree → `mc mirror` backfill → dual-run → remove bind lines from both stack files (final placement relaxation happens with the uploads batch since both services also touch `/app/uploads`).
Author
Owner

Backend PR #258 (stacked on #257): S3MovedFileMirror now routes moved files by destination tree — /app/dlls → dlls bucket via a keyed store; ebooks route unchanged. Finding: UploadCoordinator never writes /app/dlls (it only classifies fileType; file-movement does the move), so no code change there — its bind is vestigial and drops with #529. blogs/assets writer-halves are now one-line routes.

Backend PR #258 (stacked on #257): S3MovedFileMirror now routes moved files by destination tree — /app/dlls → dlls bucket via a keyed store; ebooks route unchanged. Finding: UploadCoordinator never writes /app/dlls (it only classifies fileType; file-movement does the move), so no code change there — its bind is vestigial and drops with #529. blogs/assets writer-halves are now one-line routes.
Author
Owner

Code MERGED (backend #258 — moved-file router + dlls route). Remaining = ops via the #529 runbook (dlls bucket, backfill, phase-2 bind drop).

Code MERGED (backend #258 — moved-file router + dlls route). Remaining = ops via the #529 runbook (dlls bucket, backfill, phase-2 bind drop).
Author
Owner

Epic #413 accuracy pass (2026-07-18) — closing: migration scope complete; residual is the shared #529 phase-2 bind drop.

Verified against current masters:

  • Code merged: backend #258MovedFileMirror routes /app/dlls moves to the dlls bucket (verified in SpikerSoft.EventHandlers.FileMovement/Services/MovedFileMirror.cs on master)
  • file-movement stack dual-runs (Storage__UseS3=true)
  • dlls bucket created in the 2026-07-14 phase 0; empty because the disk tree is empty too — nothing to backfill
  • The upload-coordinator finding stands: it never writes /app/dlls in code; its bind is vestigial and drops with the batch

Residual tracked in: #529 (phase-2 bind removal from both stacks + placement relax). Note the file-movement key-policy gap (#613) must be fixed before phase 2 regardless.

**Epic #413 accuracy pass (2026-07-18) — closing: migration scope complete; residual is the shared #529 phase-2 bind drop.** Verified against current masters: - Code merged: backend #258 — `MovedFileMirror` routes `/app/dlls` moves to the `dlls` bucket (verified in `SpikerSoft.EventHandlers.FileMovement/Services/MovedFileMirror.cs` on master) - file-movement stack dual-runs (`Storage__UseS3=true`) - `dlls` bucket created in the 2026-07-14 phase 0; **empty because the disk tree is empty too** — nothing to backfill - The upload-coordinator finding stands: it never writes `/app/dlls` in code; its bind is vestigial and drops with the batch Residual tracked in: #529 (phase-2 bind removal from both stacks + placement relax). Note the file-movement key-policy gap (#613) must be fixed before phase 2 regardless.
Sign in to join this conversation.