A task stuck in 'post_processing' past the cutoff was force-marked 'completed'
("assume it worked"). In a large batch, post-processing (AcoustID + quality +
import) is serialized and backs up, so tasks sit in post_processing while merely
QUEUED — then got falsely completed, showing as downloaded with no file on disk
(/Transfer empty).
Now: the cutoff is 30 min (was 5) so legit backlog isn't cut off, and when it
does fire the task is only completed if it actually produced a file
(final_file_path exists on disk) — otherwise marked failed (honest + retryable).
Applied at both stuck-detection sites (check_batch_completion + _v2).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| __init__.py | ||
| test_album_bundle_staging_sweep.py | ||
| test_album_serialize_drain.py | ||
| test_background_download_worker.py | ||
| test_candidate_ordering.py | ||
| test_deezer_pinning.py | ||
| test_download_engine.py | ||
| test_download_orchestrator.py | ||
| test_downloads_cancel.py | ||
| test_downloads_candidates.py | ||
| test_downloads_cleanup.py | ||
| test_downloads_history.py | ||
| test_downloads_lifecycle.py | ||
| test_downloads_master.py | ||
| test_downloads_post_processing.py | ||
| test_downloads_staging.py | ||
| test_downloads_status.py | ||
| test_downloads_task_worker.py | ||
| test_downloads_validation.py | ||
| test_file_finder.py | ||
| test_hifi_pinning.py | ||
| test_lidarr_pinning.py | ||
| test_orchestrator_search_mode.py | ||
| test_playlist_folder_exists.py | ||
| test_qobuz_pinning.py | ||
| test_rate_limit_policy.py | ||
| test_soulseek_pinning.py | ||
| test_soundcloud_pinning.py | ||
| test_tidal_pinning.py | ||
| test_track_detail.py | ||
| test_track_link.py | ||
| test_track_metadata_backfill.py | ||
| test_wishlist_aggregator.py | ||
| test_youtube_pinning.py | ||