github versun/RSSBox 2026.10.20

5 hours ago

What's Changed

  • Concurrency & Deadlock Prevention:

    • Removed TaskManager automatic executor restart (restart_threshold), eliminating thread deadlocks caused by holding the internal lock while waiting for executor.shutdown(wait=True).
    • Made TaskManager.submit_task atomic within a single critical section to prevent duplicate submissions and None Future leaks under concurrency.
    • Included TaskStatus.CANCELLED in 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_updater and cleanup_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.slug rather than non-unique feed.name to 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.
  • 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_feed HTTP error handling: HTTP 4xx/5xx responses (such as Cloudflare WAF 403, 404, 500) now properly trigger manual_fetch_feed with curl/8.10.1 User-Agent fallback and report real errors instead of treating error pages as successful updates and wiping feed metadata.
    • Handled feedparser results without status attribute (such as DNS failure or connection refused) gracefully without raising AttributeError.
  • Dependencies:

    • Bumped urllib3 from 2.7.0 to 2.8.0 (#165).

Full Changelog: 2026.10.13...2026.10.20

Don't miss a new RSSBox release

NewReleases is sending notifications on new releases.