mirror of
https://github.com/KeksPirates/SoftwareManager.git
synced 2026-08-04 17:59:43 +02:00
fix: Add locks, logging refactor, and bugfixes
Improve thread-safety, logging, and various bug fixes across the app. Key changes: - Add and use state.downloads_lock around accesses to state.active_downloads in multiple modules (UI, libtorrent, misc, direct downloads) to prevent race conditions. - Prevent concurrent dl_status_loop runs using a non-blocking _loop_lock and ensure proper iteration over a snapshot of downloads. - Add metadata timeout when waiting for torrent metadata and fix free-space check logic to remove or reject downloads appropriately. - Refactor download log persistence: add _load_downloads and _save_downloads helpers and centralize JSON read/write logic in utils/logging/logs.py. - Optimize DirectDownloadStatus speed window by switching to deque and using popleft to trim older samples. - Trim console log widget to 500 lines to avoid unbounded growth. - Add small state fields for custom image positioning (x/y and enabled flag). - Fix Steamrip scraper caching behavior and make Uztracker return an empty list on fetch failures. - Add defensive checks in run_download to handle missing links. These changes focus on stability and correctness for concurrent download handling and durable logging.
This commit is contained in:
@@ -37,10 +37,16 @@ def run_download(post, headers: Optional[dict] = None):
|
||||
|
||||
if ismagnet:
|
||||
link = result
|
||||
if not link:
|
||||
consoleLog("Failed to retrieve magnet link")
|
||||
return
|
||||
add_magnet(link)
|
||||
add_download_log(post.get("title", "Unknown"), "", link, False)
|
||||
else:
|
||||
link, link_headers = result if isinstance(result, tuple) else (result, None)
|
||||
if not link:
|
||||
consoleLog("Failed to retrieve download link")
|
||||
return
|
||||
final_headers = headers or link_headers
|
||||
add_direct_download(link, post.get("title", "Unknown"), headers=final_headers, single_threaded=final_headers is not None)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user