Remove empty release dirs after finalize move #12

Merged
sascha merged 1 commit from fix/finalize-move-cleanup-20260916 into main 2026-09-16 11:45:57 +02:00
Owner

Problem

05_Finalize_Move.js loescht nach dem Move nur die Original-Videodatei (rm -f), nicht das Release-Verzeichnis. Zurueck bleiben leere Ordner mit .nfo-Resten unter /tdarr/complete/.

GET /media/handoff/diagnostics listet die als target_directories — sie sehen wie haengende Jobs aus. Aktuell 6 solche Leichen gefunden (Slow Horses x2, Ted Lasso x2, Searching, Supergirl), alle mit max 1 KB .nfo oder komplett leer, waehrend die Medien laengst importiert waren.

Loesung

cleanupSourceDir() loescht das Release-Verzeichnis nur wenn alle Bedingungen erfuellt sind:

  • Verzeichnis liegt unter SourceRoot und ist nicht SourceRoot selbst
  • find lief erfolgreich (bei Fehler: fail safe, Verzeichnis bleibt)
  • keine Mediendatei mehr darin (mkv/mp4/avi/ts/m2ts/mov/wmv/mpg/mpeg/m4v/iso) — Season-Pack-Schutz

@revision 2 -> 3.

Tests

6 neue Tests im bestehenden Node-VM-Harness:

  • leeres Release-Verzeichnis wird entfernt
  • Verzeichnis mit restlicher Mediendatei bleibt (Season-Pack)
  • find-Fehler laesst Verzeichnis stehen
  • SourceRoot selbst wird nie geloescht
  • Pfad ausserhalb SourceRoot -> rc 2, kein rm -rf
  • Regression: rm -f auf das Original bleibt erhalten
Ran 22 tests in 0.933s
OK
## Problem `05_Finalize_Move.js` loescht nach dem Move nur die Original-Videodatei (`rm -f`), nicht das Release-Verzeichnis. Zurueck bleiben leere Ordner mit `.nfo`-Resten unter `/tdarr/complete/`. `GET /media/handoff/diagnostics` listet die als `target_directories` — sie sehen wie haengende Jobs aus. Aktuell 6 solche Leichen gefunden (Slow Horses x2, Ted Lasso x2, Searching, Supergirl), alle mit max 1 KB `.nfo` oder komplett leer, waehrend die Medien laengst importiert waren. ## Loesung `cleanupSourceDir()` loescht das Release-Verzeichnis nur wenn **alle** Bedingungen erfuellt sind: - Verzeichnis liegt unter `SourceRoot` und ist **nicht** `SourceRoot` selbst - `find` lief erfolgreich (bei Fehler: fail safe, Verzeichnis bleibt) - keine Mediendatei mehr darin (mkv/mp4/avi/ts/m2ts/mov/wmv/mpg/mpeg/m4v/iso) — Season-Pack-Schutz `@revision` 2 -> 3. ## Tests 6 neue Tests im bestehenden Node-VM-Harness: - leeres Release-Verzeichnis wird entfernt - Verzeichnis mit restlicher Mediendatei bleibt (Season-Pack) - `find`-Fehler laesst Verzeichnis stehen - `SourceRoot` selbst wird nie geloescht - Pfad ausserhalb `SourceRoot` -> rc 2, kein `rm -rf` - Regression: `rm -f` auf das Original bleibt erhalten ``` Ran 22 tests in 0.933s OK ```
sascha added 1 commit 2026-09-16 11:45:49 +02:00
05_Finalize_Move loeschte nur die Original-Videodatei, nicht das
Release-Verzeichnis. Zurueck blieben leere Ordner mit .nfo-Resten unter
/tdarr/complete/, die GET /media/handoff/diagnostics als target_directories
auflistet und dadurch wie haengende Jobs aussehen (6 Leichen gefunden).

cleanupSourceDir loescht das Verzeichnis nur wenn:
- es unter SourceRoot liegt und nicht SourceRoot selbst ist
- find erfolgreich war (fail safe bei Fehler)
- keine Mediendatei mehr darin liegt (Season-Pack-Schutz)

6 neue Tests im bestehenden Node-VM-Harness, 22/22 gruen.
sascha merged commit 468ca33bb3 into main 2026-09-16 11:45:57 +02:00
sascha deleted branch fix/finalize-move-cleanup-20260916 2026-09-16 11:45:57 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: sascha/tdarr#12
No description provided.