lock RealDebridUpdateLock when dequeuing, not when adding to the queue

This commit is contained in:
Cucumberrbob 2025-05-14 14:05:33 +01:00
parent ea3839514d
commit e7c2b42bd2
No known key found for this signature in database
GPG key ID: 2B935C47401C3614

View file

@ -227,15 +227,24 @@ public class Torrents(
logger.LogDebug("Adding {hash} to debrid provider {torrentInfo}", torrent.Hash, torrent.ToLog());
var id = torrent.IsFile
? await TorrentClient.AddFile(Convert.FromBase64String(torrent.FileOrMagnet))
: await TorrentClient.AddMagnet(torrent.FileOrMagnet);
await RealDebridUpdateLock.WaitAsync();
await torrentData.UpdateRdId(torrent, id);
try
{
var id = torrent.IsFile
? await TorrentClient.AddFile(Convert.FromBase64String(torrent.FileOrMagnet))
: await TorrentClient.AddMagnet(torrent.FileOrMagnet);
await UpdateTorrentClientData(torrent);
await torrentData.UpdateRdId(torrent, id);
return torrent;
await UpdateTorrentClientData(torrent);
return torrent;
}
finally
{
RealDebridUpdateLock.Release();
}
}
public async Task<IList<TorrentClientAvailableFile>> GetAvailableFiles(String hash)
@ -727,30 +736,21 @@ public class Torrents(
Boolean isFile,
Torrent torrent)
{
await RealDebridUpdateLock.WaitAsync();
var existingTorrent = await torrentData.GetByHash(infoHash);
try
if (existingTorrent != null)
{
var existingTorrent = await torrentData.GetByHash(infoHash);
if (existingTorrent != null)
{
return existingTorrent;
}
var newTorrent = await torrentData.Add(null,
infoHash,
fileOrMagnetContents,
isFile,
torrent.DownloadClient,
torrent);
return newTorrent;
}
finally
{
RealDebridUpdateLock.Release();
return existingTorrent;
}
var newTorrent = await torrentData.Add(null,
infoHash,
fileOrMagnetContents,
isFile,
torrent.DownloadClient,
torrent);
return newTorrent;
}
public async Task Update(Torrent torrent)