fix(disk-delete): launcher leest de database uit DATABASE_URL #87
No reviewers
Labels
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
janpeter/Media-Organizer!87
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/disk-delete-launcher-database-name"
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?
De disk-delete-launcher had de databasenaam hardgecodeerd op
media_organizer, terwijl de app opmedia_organizer_v2draait (PR #79). Beide databases bestaan op max2; de oude heeft geendisk_delete%-tabellen.Gemeten op max2 (live, vóór deze wijziging)
De exacte query uit de launcher tegen de hardgecodeerde database:
Daardoor faalde al de eerste psql-aanroep van elke tick (
reconcile_stale) op|| failen eindigde de launcher opdisk_delete_launcher_failed. Fail-closed, dus er is nooit iets verwijderd — maar ook mét een geactiveerde timer zou de feature nooit een opdracht verwerken. Op dit moment staan er 100 opdrachten opqueued(2026-09-21 20:48 UTC), 0 auditregels, 0 slotrijen, en alle 100 bestanden staan nog op schijf (present=100 missing=0).Wijziging
DATABASE_URLindeploy/media-organizer.env— dezelfde env die dedelete-workerkrijgt. De env-file wordt geparsed, niet ge-sourced (hij bevat geheimen). Quotes, een CRLF-regeleinde en een?schema=…-querystring worden afgepeld.disk_delete_db_name_unresolved); er is geen terugval op een vaste naam.psql-array houdt-cals laatste element (MAJOR 3 uit ronde 3 blijft gedekt).Waarom geen test dit zag
disk-delete-launcher-exec.test.tsfaketdockermaar las het-d-argument niet, endisk-delete-launcher.test.tsis een parsetest op de scripttekst. De fake registreert de gebruikte database nu in een bestand en twee regressies toetsen hem.Verificatie
node --test src/test/disk-delete-launcher-exec.test.ts— 4/4 groen met deze wijziging.Discriminatie bewezen: met de oude launcher en de nieuwe tests zijn beide regressies rood op de juiste grond (
verkeerde database in -d: media_organizer, media_organizer), terwijl de twee bestaande tests groen blijven. De parse-asserties vandisk-delete-launcher.test.tszijn los nagerekend tegen het gewijzigde script (-cals laatste: true, geen-tAqc: true, statusset'queued','running','deleted', reaper-regex: true).Het runbook-recept voor de losse databasecontrole is met een fixture-env-file uitgevoerd en geeft
media_organizer_v2.Runbook
Toegevoegd: een verplichte eerste-tick-controle.
systemctl enable --nowbewijst niets — een timer die elke minuut faalt ziet er inlist-timersidentiek uit als een werkende. De stap eistResult=success+ExecMainStatus=0en geeft het losse psql-recept, met de expliciete waarschuwing datrelation "disk_delete_work" does not existbetekent dat je de verkeerde database raakt en niet dat de migratie ontbreekt.Niet in deze PR
queued-opdrachten blijven staan. Zodra de timer aan gaat verwijdert de eerste tick ze definitief — ruim ze eerst op als dat niet de bedoeling is.🤖 Generated with Claude Code
Verdict: APPROVED
Geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden.
Findings
Geen blokkerende of error-severity findings gevonden.
Review
De wijziging houdt de disk-delete launcher fail-closed en haalt de databasenaam uit dezelfde runtime-env (
deploy/media-organizer.env) als de delete-worker. Daarmee verdwijnt de hardgecodeerdemedia_organizer-koppeling zonder de env-file te sourcen of secrets uit te voeren. De validatie op de afgeleide databasenaam voorkomt een stille fallback bij een onbruikbareDATABASE_URL.De toegevoegde executietest controleert expliciet het
psql -dargument en vangt regressie naar een vaste databasenaam af. De runbook-aanvulling past bij de productstandaard voor de korte, fail-closed delete-worker en maakt de eerste timer-tick verifieerbaar.