{"record":{"id":"429aa32c1f7091bc","repo":"Sonarr/Sonarr","slug":"all-download-clients-for-downloadprotocol-are-no","errorCode":null,"errorMessage":"All download clients for {downloadProtocol} are not available","messagePattern":"All download clients for (.+?) are not available","errorType":"exception","errorClass":"DownloadClientUnavailableException","httpStatus":null,"severity":"warning","filePath":"src/NzbDrone.Core/Download/DownloadClientProvider.cs","lineNumber":233,"sourceCode":"                    {\n                        throw new DownloadClientUnavailableException($\"Indexer specified download client is not available due to recent failures for {indexer.Name}\");\n                    }\n\n                    return [client];\n                }\n            }\n\n            if (blockedProviders.Any())\n            {\n                var nonBlockedProviders = availableProviders.Where(v => !blockedProviders.Contains(v.Definition.Id)).ToList();\n\n                if (nonBlockedProviders.Any())\n                {\n                    availableProviders = nonBlockedProviders;\n                }\n                else if (filterBlockedClients)\n                {\n                    throw new DownloadClientUnavailableException($\"All download clients for {downloadProtocol} are not available\");\n                }\n                else\n                {\n                    _logger.Trace(\"No non-blocked Download Client available{0}.\", forSingleClient ? \", retrying blocked one\" : $\" for {downloadProtocol}, returning all clients\");\n                }\n            }\n\n            return availableProviders;\n        }\n    }\n}\n","sourceCodeStart":215,"sourceCodeEnd":245,"githubUrl":"https://github.com/Sonarr/Sonarr/blob/da2284d7eaab22ed9b2ca698af690148d691e967/src/NzbDrone.Core/Download/DownloadClientProvider.cs#L215-L245","documentation":"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.","triggerScenarios":"All enabled clients for the release's DownloadProtocol are simultaneously in the blocked-providers set, and the caller requested blocked clients be filtered out.","commonSituations":"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.","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."],"exampleFix":null,"handlingStrategy":"retry","validationCode":"var blocked = new HashSet<int>(_downloadClientStatusService.GetBlockedProviders().Select(v => v.ProviderId));\nvar healthy = _downloadClientFactory.GetAvailableProviders()\n    .Where(c => c.Protocol == protocol && !blocked.Contains(c.Definition.Id)).ToList();\nif (!healthy.Any()) { /* all blocked: defer the grab or alert */ }","typeGuard":null,"tryCatchPattern":"try { /* get clients with filterBlockedClients=true */ }\ncatch (DownloadClientUnavailableException ex) when (ex.Message.Contains(\"are not available\"))\n{\n    // transient: back off and retry; alert the operator about a possible outage\n}","preventionTips":["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."],"tags":["download-client","blocked","transient","protocol"],"backgroundTag":null,"analyzedSha":"da2284d7eaab22ed9b2ca698af690148d691e967","analyzedAt":"2026-08-13T15:53:02.562Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}