[pull] master from kevoreilly:master#389
Merged
pull[bot] merged 4 commits intothreatcode:masterfrom Jan 26, 2026
Merged
Conversation
The dist_lock and fetch_lock were essentially "permission slips" to start threads. Their purpose was to limit concurrency:
1. `dist_lock`: Was a Semaphore initialized with dist_threads (e.g., 4). It allowed exactly 4 report-downloading threads to start.
2. `fetch_lock`: Was a Semaphore initialized with 1. It allowed exactly 1 task-fetching thread to start.
Why they caused problems (and why we removed them)
In the original code, they acted as a trap:
1. Acquisition: When the script started, the main thread grabbed these "permission slips" (acquired the locks) to start the worker threads.
2. The Crash: If a worker thread crashed (threw an exception and died), it did not give the permission slip back (it didn't release the lock).
3. The Deadlock: If you tried to add restart logic that checked these locks, it would see "0 permissions available" and refuse to start a replacement thread. The script would think "I already have 4 threads
running" when in reality it had 0 running and 4 lost locks.
The New Solution (Supervisor)
We replaced these locks with a Supervisor Loop.
Instead of relying on a counter (lock) that can get out of sync, the new code checks the actual reality:
* "Do I have a thread named 'fetcher' running?"
* If No: Start one immediately.
This is much more robust because it self-corrects based on the actual system state, not a variable that might be wrong. You no longer need the locks because the Supervisor logic explicitly strictly enforcing "1
fetcher, N downloaders".
Remove unused threads list initialization.
Removed print statements for ids and to_upload in dist.py.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )