Repository navigation
What's Changed
-
Concurrency & Deadlock Prevention:
- Removed
TaskManagerautomatic executor restart (restart_threshold), eliminating thread deadlocks caused by holding the internal lock while waiting forexecutor.shutdown(wait=True). - Made
TaskManager.submit_taskatomic within a single critical section to prevent duplicate submissions andNoneFuture leaks under concurrency. - Included
TaskStatus.CANCELLEDin task history cleanup and clearing routines to prevent memory accumulation. - Updated scheduled feed updates (
feed_updater) to hold the flock until all submitted worker tasks have drained on timeout, preventing overlapping cron executions. - Switched flock lock files (
feed_updaterandcleanup_entries) to append mode ("a"), truncating only after acquiring flock so competing cron runs do not wipe the active process PID. - Keyed scheduled feed update tasks by
feed.slugrather than non-uniquefeed.nameto avoid deduplicating multi-language feeds. - Disambiguated admin force-update task names for tags and feeds, and materialized feed querysets into lists before dispatching to worker threads.
- Removed
-
Network Robustness & Error Recovery:
- Introduced
RSS_FETCH_TIMEOUT(default: 30s) socket timeout for feed downloads via urllib handler and httpx client, validated as a positive finite number. - Fixed
fetch_feedHTTP error handling: HTTP 4xx/5xx responses (such as Cloudflare WAF 403, 404, 500) now properly triggermanual_fetch_feedwithcurl/8.10.1User-Agent fallback and report real errors instead of treating error pages as successful updates and wiping feed metadata. - Handled feedparser results without
statusattribute (such as DNS failure or connection refused) gracefully without raisingAttributeError.
- Introduced
-
Dependencies:
- Bumped
urllib3from 2.7.0 to 2.8.0 (#165).
- Bumped
Full Changelog: 2026.10.13...2026.10.20