Reconciler closes the media cross-pool enqueue gap #169
Labels
No labels
kind
bug
kind
enhancement
wayfinder
grilling
wayfinder
map
wayfinder
prototype
wayfinder
research
wayfinder
task
workflow
needs-info
workflow
needs-triage
workflow
ready-for-agent
workflow
ready-for-human
workflow
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
rosa/vernier#169
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Part of the "defer media processing to a background job" spec (PR #165; ADR-0020,
ADR-0021). Closes the crash-consistency gap the deferral opens up.
What to build
An upload now writes to three places that cannot share one transaction: the staged
original (data volume), the Media row (app sqlx 0.9 pool), and the apalis job (its
own sqlx 0.8 pool — ADR-0016). A crash between any two leaves a gap. Add a
reconciler that closes it, reusing the idempotent job from #167 rather than a
second, hand-rolled queue.
On startup and on a periodic tick, the reconciler:
Combined with the job's idempotency, a crash between staging the file, inserting the
Media row, and enqueuing the job becomes a recoverable delay, not lost data — and a
Media stuck Processing forever self-heals without manual intervention.
Acceptance criteria
Blocked by