You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
A killed separation can come back as a finished song with a truncated or missing file #969
ffmpeg wrote original.wav and mix.wav straight to their final names, and the Lead + Backing split did the same for lead_vocals.wav and backing_vocals.wav. A failed split also left a lone lead_vocals.wav behind. When the app was killed part way and the song was rebuilt from its folder (the registry said it was still running, or had lost it), any folder with one stem counted as a finished song. The result was a "done" song with a truncated original, a missing mix, or a lead vocal without its backing.
Who is affected: everyone, after a kill or a power loss during a separation. Narrow, but the song looks finished when it is not.
Where
app/pipeline/collect.py:83 write to a dot temp name, then os.replace (:91)
app/pipeline/vocal_split.py:103 the split pair moved in, removed whole on failure (:107)
app/core/registry.py:796STEMS_COMPLETE, :799mark_stems_complete, :859 the rebuild check
Current state
Fixed in PR #898 and PR #901 (merged into big-release, ships with 0.21.0).
PR fix(registry): rebuild a song as done only when its separation finished #901: the last thing a separation writes is stems/.complete, after every stem and the folder are fsynced. A folder without it is not rebuilt as done: a running job goes back in the queue, and an upload whose registry entry is lost comes back as a stopped song that Extract can run again. A split counts only when both files are there.
Activity
thcp commentedon Nov 3, 2026
This is fixed in PRs #898 and #901, merged into big-release. It ships with 0.21.0, so I am closing this issue now.
This comment was written with the help of AI.