Radarr requesting multiple copies of the same file via Decypharr
Hoping someone can help me here...
Running Raddar with Decypharr for download client. Torbox for debrid service with Plex media server.
Using the symlink downloads from Decypharr.
If I manually go select a movie, manually select a release to download, it'll just download that one copy. Takes ~3s, everything gets passed to Decypharr file gets selected at Torbox, symlink created, plex picks it up... it's wonderful.
The problems arise when I let Radarr do the searching itself. It'll find a release, grab it send it to Decypharr. Decypharr grabs it at Torbox but for some reason Radarr believes the download has failed, so it requests another release. Decypharr then creates the symlink for the original request but Radarr doesn't see it because it thinks its failed so waits for the next release.
The next release... same thing, Radarr thinks its failed and requests it again. Rinse and repeat till I have 38 copies of the same movie. If I manually go delete one of the downloads from Decypharr queue Radarr will realise, and then seems to scan the downloads directory where it finds a release and then plonks it into it's library where plex then scans it.
I cannot get it to stop requesting the same movie multiple times and don't really know where its going wrong.
What I have noticed is that when I request a movie and it's in the decypharr queue... it doesn't show up in the activity in Radarr. Radarr will show in the logs that it "Failed to connect to qBittorrent"... but the file has been requested etc.
2026-05-19 00:13:40.4|Warn|ProcessDownloadDecisions|Couldn't add release '[MOVIE RELEASE] from Indexer Uindex (Prowlarr) to download queue.
[v6.1.1.10360] NzbDrone.Core.Download.Clients.DownloadClientException: Failed to connect to qBittorrent, please check your settings.
---> System.Net.WebException: Http request timed out
---> System.Threading.Tasks.TaskCanceledException: The operation was canceled.
---> System.Threading.Tasks.TaskCanceledException: The operation was canceled.
---> System.IO.IOException: Unable to read data from the transport connection: Operation canceled.
---> System.Net.Sockets.SocketException (125): Operation canceled
--- End of inner exception stack trace ---
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource<System.Int32>.GetResult(Int16 token)
at System.Net.Http.HttpConnection.InitialFillAsync(Boolean async)
at System.Net.Http.HttpConnection.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.HttpConnection.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.AuthenticationHelper.SendWithNtAuthAsync(HttpRequestMessage request, Uri authUri, Boolean async, ICredentials credentials, Boolean isProxyAuth, HttpConnection connection, HttpConnectionPool connectionPool, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.AuthenticationHelper.SendWithAuthAsync(HttpRequestMessage request, Uri authUri, Boolean async, ICredentials credentials, Boolean preAuthenticate, Boolean isProxyAuth, Boolean doRequestAuth, HttpConnectionPool pool, CancellationToken cancellationToken)
at System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.HttpClient.HandleFailure(Exception e, Boolean telemetryStarted, HttpResponseMessage response, CancellationTokenSource cts, CancellationToken cancellationToken, CancellationTokenSource pendingRequestsCts)
at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
at NzbDrone.Common.Http.Dispatchers.ManagedHttpDispatcher.GetResponseAsync(HttpRequest request, CookieContainer cookies) in ./NzbDrone.Common/Http/Dispatchers/ManagedHttpDispatcher.cs:line 115
--- End of inner exception stack trace ---
at NzbDrone.Common.Http.Dispatchers.ManagedHttpDispatcher.GetResponseAsync(HttpRequest request, CookieContainer cookies) in ./NzbDrone.Common/Http/Dispatchers/ManagedHttpDispatcher.cs:line 144
at NzbDrone.Common.Http.HttpClient.ExecuteRequestAsync(HttpRequest request, CookieContainer cookieContainer) in ./NzbDrone.Common/Http/HttpClient.cs:line 157
at NzbDrone.Common.Http.HttpClient.ExecuteAsync(HttpRequest request) in ./NzbDrone.Common/Http/HttpClient.cs:line 70
at NzbDrone.Common.Http.HttpClient.Execute(HttpRequest request) in ./NzbDrone.Common/Http/HttpClient.cs:line 128
at NzbDrone.Core.Download.Clients.QBittorrent.QBittorrentProxyV2.ProcessRequest(HttpRequestBuilder requestBuilder, QBittorrentSettings settings) in ./NzbDrone.Core/Download/Clients/QBittorrent/QBittorrentProxyV2.cs:line 369
--- End of inner exception stack trace ---
at NzbDrone.Core.Download.Clients.QBittorrent.QBittorrentProxyV2.ProcessRequest(HttpRequestBuilder requestBuilder, QBittorrentSettings settings) in ./NzbDrone.Core/Download/Clients/QBittorrent/QBittorrentProxyV2.cs:line 388
at NzbDrone.Core.Download.Clients.QBittorrent.QBittorrentProxyV2.AddTorrentFromUrl(String torrentUrl, TorrentSeedConfiguration seedConfiguration, QBittorrentSettings settings) in ./NzbDrone.Core/Download/Clients/QBittorrent/QBittorrentProxyV2.cs:line 158
at NzbDrone.Core.Download.Clients.QBittorrent.QBittorrent.AddFromMagnetLink(RemoteMovie remoteMovie, String hash, String magnetLink) in ./NzbDrone.Core/Download/Clients/QBittorrent/QBittorrent.cs:line 84
at NzbDrone.Core.Download.TorrentClientBase`1.DownloadFromMagnetUrl(RemoteMovie remoteMovie, IIndexer indexer, String magnetUrl) in ./NzbDrone.Core/Download/TorrentClientBase.cs:line 235
at NzbDrone.Core.Download.TorrentClientBase`1.DownloadFromWebUrl(RemoteMovie remoteMovie, IIndexer indexer, String torrentUrl) in ./NzbDrone.Core/Download/TorrentClientBase.cs:line 158
at NzbDrone.Core.Download.TorrentClientBase`1.Download(RemoteMovie remoteMovie, IIndexer indexer) in ./NzbDrone.Core/Download/TorrentClientBase.cs:line 124
at NzbDrone.Core.Download.DownloadService.DownloadReport(RemoteMovie remoteMovie, IDownloadClient downloadClient) in ./NzbDrone.Core/Download/DownloadService.cs:line 97
at NzbDrone.Core.Download.DownloadService.DownloadReport(RemoteMovie remoteMovie, Nullable`1 downloadClientId) in ./NzbDrone.Core/Download/DownloadService.cs:line 63
at NzbDrone.Core.Download.ProcessDownloadDecisions.ProcessDecisionInternal(DownloadDecision decision, Nullable`1 downloadClientId) in ./NzbDrone.Core/Download/ProcessDownloadDecisions.cs:line 202
If I setup the qbittorrent connector from Radarr using the instructions (username = http://radarr:8989 + username = API key), I can see that Radarr automatically gets detected and shows up under the *Arrs config section in Decypharr. The test also always returns successful.
Not sure whether this is a Decypharr or Radarr issue at this point. The same thing occurs in Sonarr so perhaps it is a decypharr issue.