В файловой системе нашел файл .part, который (судя по id video) принадлежал к видео, потоки для которого были выкачаны (и файлы были на месте)
Два момента:
почема такая ситуация вообще могла произойти (почему в каталоге после завершения закачки остался ненулевой файл part)
почему алгоритм не определил его как бесхозный (в этом случае его можно было просто удалить - как раз для этого меню и нужно)
Ответ на первый вопрос - вполне возможно, сработала та самая ситация, которая в коде помечена как "todo" (если удаляем запущенный поток, например, чере меню "удалить все незавершенные", то не дожидаемся, пока они реально встанут на паузу - при определенном стечении обстоятельств можно удалить запись в бд, удалить файл с файловой системы, а потом все равно получить операцию write по старому имени - теоретические есть шанс, что это может пересоздать временный файл - но это не точно, нужно еще проверять)
Ответ на второй вопрос - нужно посмотреть алгоритм определения бесхозных файлов в коде. Сейчас там есть какое-то допущение по файлам, которые заканчиваются на ".part", нужно его пересмотреть.
Поймал такую ситацию:
В файловой системе нашел файл .part, который (судя по id video) принадлежал к видео, потоки для которого были выкачаны (и файлы были на месте)
Два момента:
Ответ на первый вопрос - вполне возможно, сработала та самая ситация, которая в коде помечена как "todo" (если удаляем запущенный поток, например, чере меню "удалить все незавершенные", то не дожидаемся, пока они реально встанут на паузу - при определенном стечении обстоятельств можно удалить запись в бд, удалить файл с файловой системы, а потом все равно получить операцию write по старому имени - теоретические есть шанс, что это может пересоздать временный файл - но это не точно, нужно еще проверять)
Ответ на второй вопрос - нужно посмотреть алгоритм определения бесхозных файлов в коде. Сейчас там есть какое-то допущение по файлам, которые заканчиваются на ".part", нужно его пересмотреть.