If a replay is deleted during a running download, all chunks become unavailable.
Each Worker will then eventually sys.exit(1) (which only exits the thread) due to an error, starving the ThreadPool.
Meanwhile the ThreadPool is blocked on tasks.join(), but since no workers are left to complete the remaining downloads, it stays stuck there forever.
If a replay is deleted during a running download, all chunks become unavailable. Each
Worker
will then eventuallysys.exit(1)
(which only exits the thread) due to an error, starving theThreadPool
. Meanwhile theThreadPool
is blocked ontasks.join()
, but since no workers are left to complete the remaining downloads, it stays stuck there forever.