Sonarr/Sonarr · warning · DownloadClientUnavailableException
All download clients for {downloadProtocol} are not availabl
Error message
All download clients for {downloadProtocol} are not available What it means
GetFilteredDownloadClients: at least one client is blocked, no non-blocked clients remain, and filterBlockedClients is true, so every client for the protocol is unavailable. DownloadClientUnavailableException. Transient.
Source
Thrown at src/NzbDrone.Core/Download/DownloadClientProvider.cs:233
{
throw new DownloadClientUnavailableException($"Indexer specified download client is not available due to recent failures for {indexer.Name}");
}
return [client];
}
}
if (blockedProviders.Any())
{
var nonBlockedProviders = availableProviders.Where(v => !blockedProviders.Contains(v.Definition.Id)).ToList();
if (nonBlockedProviders.Any())
{
availableProviders = nonBlockedProviders;
}
else if (filterBlockedClients)
{
throw new DownloadClientUnavailableException($"All download clients for {downloadProtocol} are not available");
}
else
{
_logger.Trace("No non-blocked Download Client available{0}.", forSingleClient ? ", retrying blocked one" : $" for {downloadProtocol}, returning all clients");
}
}
return availableProviders;
}
}
}
View on GitHub (pinned to da2284d7ea)
Solutions
- Resolve connectivity to the clients (run Test on each in Settings -> Download Clients).
- Wait out the cooldown and retry.
- Add or re-enable a healthy client for that protocol as a fallback.
Defensive patterns
Strategy: retry
Validate before calling
var blocked = new HashSet<int>(_downloadClientStatusService.GetBlockedProviders().Select(v => v.ProviderId));
var healthy = _downloadClientFactory.GetAvailableProviders()
.Where(c => c.Protocol == protocol && !blocked.Contains(c.Definition.Id)).ToList();
if (!healthy.Any()) { /* all blocked: defer the grab or alert */ } Try / catch
try { /* get clients with filterBlockedClients=true */ }
catch (DownloadClientUnavailableException ex) when (ex.Message.Contains("are not available"))
{
// transient: back off and retry; alert the operator about a possible outage
} Prevention
- Run multiple clients per protocol so one outage does not block all grabs.
- Alert when clients enter the blocked state.
- Fix shared dependencies (network, credentials) quickly.
When it happens
Trigger: All enabled clients for the release's DownloadProtocol are simultaneously in the blocked-providers set, and the caller requested blocked clients be filtered out.
Common situations: A shared outage (seedbox/tracker down, or a usenet provider outage) knocks out every client of a protocol; misconfiguration causes repeated auth failures across all clients.
Related errors
- Indexer specified download client is not available due to re
- Unexpected response
- No {remoteEpisode.Release.DownloadProtocol} download client
- Aria2 returned error code {fault.FaultCode}: {fault.FaultStr
- Blackhole does not support magnet links.
AI-assisted analysis of Sonarr/Sonarr@da2284d7ea (2026-08-13).
Data as JSON: /api/errors/429aa32c1f7091bc.
Report an issue: GitHub.