You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Degrade failing instances at startup instead of exiting the whole app
Previously any single instance failing its startup check terminated
decluttarr via wait_and_exit(), taking healthy instances down with it
and causing container crash-loops on slow servers (ManiMatter#317 follow-up).
Now each unit (arr, qBittorrent, SABnzbd) records a readiness state:
- Transient failures (timeout, connection, 5xx, unknown) degrade the
instance; setup is re-attempted every timer cycle and the instance
rejoins automatically (including its detect_deletions watchers).
- Definitive config errors (401/403, wrong username/password, bad
SABnzbd api key, non-English UI, client version too old) degrade the
instance with a per-cycle ERROR + tip; they are not retried since
they cannot heal without user action (and retrying a bad password
would get the IP banned by qBittorrent).
- The app exits when nothing is configured, or when every configured
unit has failed definitively - re-checked each cycle, not only at
launch.
Degraded download clients are skipped everywhere a job would call them
(bandwidth checks, obsolete-tagging, bad-file handling) via a ready_only
lookup. Removal jobs additionally fail closed: a download whose
configured client is degraded is left untouched rather than deleted,
since its protection status (protected tag, private/public tracker)
cannot be verified while the client is down.
Wrong-arr-type and arr-version-too-old keep their existing
log-and-continue behavior. Repeated identical setup failures log a
single-line skip instead of the full error block each cycle.
Also fixes main.py handing the deletion watchers to a throwaway
WatcherManager, which left terminate() stopping an instance that owned
no observers.
0 commit comments