Add more checks for when torrents or downloads have been removed.
This commit is contained in:
parent
0f4d896e53
commit
e9e16bedf0
4 changed files with 144 additions and 56 deletions
|
|
@ -56,6 +56,11 @@ namespace RdtClient.Data.Data
|
||||||
var dbDownload = await _dataContext.Downloads
|
var dbDownload = await _dataContext.Downloads
|
||||||
.FirstOrDefaultAsync(m => m.DownloadId == downloadId);
|
.FirstOrDefaultAsync(m => m.DownloadId == downloadId);
|
||||||
|
|
||||||
|
if (dbDownload == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
dbDownload.Link = unrestrictedLink;
|
dbDownload.Link = unrestrictedLink;
|
||||||
|
|
||||||
await _dataContext.SaveChangesAsync();
|
await _dataContext.SaveChangesAsync();
|
||||||
|
|
@ -68,6 +73,11 @@ namespace RdtClient.Data.Data
|
||||||
var dbDownload = await _dataContext.Downloads
|
var dbDownload = await _dataContext.Downloads
|
||||||
.FirstOrDefaultAsync(m => m.DownloadId == downloadId);
|
.FirstOrDefaultAsync(m => m.DownloadId == downloadId);
|
||||||
|
|
||||||
|
if (dbDownload == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
dbDownload.DownloadStarted = dateTime;
|
dbDownload.DownloadStarted = dateTime;
|
||||||
|
|
||||||
await _dataContext.SaveChangesAsync();
|
await _dataContext.SaveChangesAsync();
|
||||||
|
|
@ -97,6 +107,11 @@ namespace RdtClient.Data.Data
|
||||||
var dbDownload = await _dataContext.Downloads
|
var dbDownload = await _dataContext.Downloads
|
||||||
.FirstOrDefaultAsync(m => m.DownloadId == downloadId);
|
.FirstOrDefaultAsync(m => m.DownloadId == downloadId);
|
||||||
|
|
||||||
|
if (dbDownload == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
dbDownload.UnpackingQueued = dateTime;
|
dbDownload.UnpackingQueued = dateTime;
|
||||||
|
|
||||||
await _dataContext.SaveChangesAsync();
|
await _dataContext.SaveChangesAsync();
|
||||||
|
|
@ -109,6 +124,11 @@ namespace RdtClient.Data.Data
|
||||||
var dbDownload = await _dataContext.Downloads
|
var dbDownload = await _dataContext.Downloads
|
||||||
.FirstOrDefaultAsync(m => m.DownloadId == downloadId);
|
.FirstOrDefaultAsync(m => m.DownloadId == downloadId);
|
||||||
|
|
||||||
|
if (dbDownload == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
dbDownload.UnpackingStarted = dateTime;
|
dbDownload.UnpackingStarted = dateTime;
|
||||||
|
|
||||||
await _dataContext.SaveChangesAsync();
|
await _dataContext.SaveChangesAsync();
|
||||||
|
|
@ -121,6 +141,11 @@ namespace RdtClient.Data.Data
|
||||||
var dbDownload = await _dataContext.Downloads
|
var dbDownload = await _dataContext.Downloads
|
||||||
.FirstOrDefaultAsync(m => m.DownloadId == downloadId);
|
.FirstOrDefaultAsync(m => m.DownloadId == downloadId);
|
||||||
|
|
||||||
|
if (dbDownload == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
dbDownload.UnpackingFinished = dateTime;
|
dbDownload.UnpackingFinished = dateTime;
|
||||||
|
|
||||||
await _dataContext.SaveChangesAsync();
|
await _dataContext.SaveChangesAsync();
|
||||||
|
|
@ -133,6 +158,11 @@ namespace RdtClient.Data.Data
|
||||||
var dbDownload = await _dataContext.Downloads
|
var dbDownload = await _dataContext.Downloads
|
||||||
.FirstOrDefaultAsync(m => m.DownloadId == downloadId);
|
.FirstOrDefaultAsync(m => m.DownloadId == downloadId);
|
||||||
|
|
||||||
|
if (dbDownload == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
dbDownload.Completed = dateTime;
|
dbDownload.Completed = dateTime;
|
||||||
|
|
||||||
await _dataContext.SaveChangesAsync();
|
await _dataContext.SaveChangesAsync();
|
||||||
|
|
@ -145,6 +175,11 @@ namespace RdtClient.Data.Data
|
||||||
var dbDownload = await _dataContext.Downloads
|
var dbDownload = await _dataContext.Downloads
|
||||||
.FirstOrDefaultAsync(m => m.DownloadId == downloadId);
|
.FirstOrDefaultAsync(m => m.DownloadId == downloadId);
|
||||||
|
|
||||||
|
if (dbDownload == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
dbDownload.Error = error;
|
dbDownload.Error = error;
|
||||||
|
|
||||||
await _dataContext.SaveChangesAsync();
|
await _dataContext.SaveChangesAsync();
|
||||||
|
|
@ -157,6 +192,11 @@ namespace RdtClient.Data.Data
|
||||||
var dbDownload = await _dataContext.Downloads
|
var dbDownload = await _dataContext.Downloads
|
||||||
.FirstOrDefaultAsync(m => m.DownloadId == downloadId);
|
.FirstOrDefaultAsync(m => m.DownloadId == downloadId);
|
||||||
|
|
||||||
|
if (dbDownload == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
dbDownload.RetryCount = retryCount;
|
dbDownload.RetryCount = retryCount;
|
||||||
|
|
||||||
await _dataContext.SaveChangesAsync();
|
await _dataContext.SaveChangesAsync();
|
||||||
|
|
@ -169,6 +209,11 @@ namespace RdtClient.Data.Data
|
||||||
var dbDownload = await _dataContext.Downloads
|
var dbDownload = await _dataContext.Downloads
|
||||||
.FirstOrDefaultAsync(m => m.DownloadId == downloadId);
|
.FirstOrDefaultAsync(m => m.DownloadId == downloadId);
|
||||||
|
|
||||||
|
if (dbDownload == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
dbDownload.RemoteId = remoteId;
|
dbDownload.RemoteId = remoteId;
|
||||||
|
|
||||||
await _dataContext.SaveChangesAsync();
|
await _dataContext.SaveChangesAsync();
|
||||||
|
|
|
||||||
|
|
@ -104,6 +104,14 @@ namespace RdtClient.Service.Services
|
||||||
Log.Debug($"Processing active download {downloadId}: error {downloadClient.Error}");
|
Log.Debug($"Processing active download {downloadId}: error {downloadClient.Error}");
|
||||||
var download = await _downloads.GetById(downloadId);
|
var download = await _downloads.GetById(downloadId);
|
||||||
|
|
||||||
|
if (download == null)
|
||||||
|
{
|
||||||
|
ActiveDownloadClients.TryRemove(downloadId, out _);
|
||||||
|
|
||||||
|
Log.Debug($"Download with ID {downloadId} not found! Removed from queue");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (download.RetryCount < DownloadRetryCount)
|
if (download.RetryCount < DownloadRetryCount)
|
||||||
{
|
{
|
||||||
Log.Debug($"Processing active download {downloadId}: error {downloadClient.Error}, download retry count {download.RetryCount}/{DownloadRetryCount}, torrent retry count {download.Torrent.RetryCount}/{TorrentRetryCount}, retrying download");
|
Log.Debug($"Processing active download {downloadId}: error {downloadClient.Error}, download retry count {download.RetryCount}/{DownloadRetryCount}, torrent retry count {download.Torrent.RetryCount}/{TorrentRetryCount}, retrying download");
|
||||||
|
|
|
||||||
|
|
@ -164,6 +164,11 @@ namespace RdtClient.Service.Services
|
||||||
{
|
{
|
||||||
var torrent = await GetById(torrentId);
|
var torrent = await GetById(torrentId);
|
||||||
|
|
||||||
|
if (torrent == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
await GetRdNetClient().Torrents.SelectFilesAsync(torrent.RdId, fileIds.ToArray());
|
await GetRdNetClient().Torrents.SelectFilesAsync(torrent.RdId, fileIds.ToArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -171,6 +176,11 @@ namespace RdtClient.Service.Services
|
||||||
{
|
{
|
||||||
var torrent = await GetById(torrentId);
|
var torrent = await GetById(torrentId);
|
||||||
|
|
||||||
|
if (torrent == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var rdTorrent = await GetRdNetClient().Torrents.GetInfoAsync(torrent.RdId);
|
var rdTorrent = await GetRdNetClient().Torrents.GetInfoAsync(torrent.RdId);
|
||||||
|
|
||||||
var torrentLinks = rdTorrent.Links.Where(m => !String.IsNullOrWhiteSpace(m)).ToList();
|
var torrentLinks = rdTorrent.Links.Where(m => !String.IsNullOrWhiteSpace(m)).ToList();
|
||||||
|
|
@ -199,8 +209,11 @@ namespace RdtClient.Service.Services
|
||||||
{
|
{
|
||||||
var torrent = await GetById(torrentId);
|
var torrent = await GetById(torrentId);
|
||||||
|
|
||||||
if (torrent != null)
|
if (torrent == null)
|
||||||
{
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
foreach (var download in torrent.Downloads)
|
foreach (var download in torrent.Downloads)
|
||||||
{
|
{
|
||||||
if (TorrentRunner.ActiveUnpackClients.TryRemove(download.DownloadId, out var activeUnpack))
|
if (TorrentRunner.ActiveUnpackClients.TryRemove(download.DownloadId, out var activeUnpack))
|
||||||
|
|
@ -258,13 +271,23 @@ namespace RdtClient.Service.Services
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private async Task DeleteDownload(Guid torrentId, Guid downloadId)
|
private async Task DeleteDownload(Guid torrentId, Guid downloadId)
|
||||||
{
|
{
|
||||||
var torrent = await GetById(torrentId);
|
var torrent = await GetById(torrentId);
|
||||||
|
|
||||||
|
if (torrent == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var download = await _downloads.GetById(downloadId);
|
var download = await _downloads.GetById(downloadId);
|
||||||
|
|
||||||
|
if (download == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var downloadPath = DownloadPath(torrent);
|
var downloadPath = DownloadPath(torrent);
|
||||||
|
|
||||||
var filePath = DownloadHelper.GetDownloadPath(downloadPath, torrent, download);
|
var filePath = DownloadHelper.GetDownloadPath(downloadPath, torrent, download);
|
||||||
|
|
@ -305,6 +328,11 @@ namespace RdtClient.Service.Services
|
||||||
{
|
{
|
||||||
var download = await _downloads.GetById(downloadId);
|
var download = await _downloads.GetById(downloadId);
|
||||||
|
|
||||||
|
if (download == null)
|
||||||
|
{
|
||||||
|
throw new Exception($"Download with ID {downloadId} not found");
|
||||||
|
}
|
||||||
|
|
||||||
var unrestrictedLink = await GetRdNetClient().Unrestrict.LinkAsync(download.Path);
|
var unrestrictedLink = await GetRdNetClient().Unrestrict.LinkAsync(download.Path);
|
||||||
|
|
||||||
await _downloads.UpdateUnrestrictedLink(downloadId, unrestrictedLink.Download);
|
await _downloads.UpdateUnrestrictedLink(downloadId, unrestrictedLink.Download);
|
||||||
|
|
@ -388,6 +416,11 @@ namespace RdtClient.Service.Services
|
||||||
{
|
{
|
||||||
var torrent = await _torrentData.GetById(torrentId);
|
var torrent = await _torrentData.GetById(torrentId);
|
||||||
|
|
||||||
|
if (torrent == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var newRetryCount = torrent.RetryCount + 1;
|
var newRetryCount = torrent.RetryCount + 1;
|
||||||
|
|
||||||
foreach (var download in torrent.Downloads)
|
foreach (var download in torrent.Downloads)
|
||||||
|
|
@ -498,8 +531,11 @@ namespace RdtClient.Service.Services
|
||||||
{
|
{
|
||||||
var torrent = await _torrentData.GetById(torrentId);
|
var torrent = await _torrentData.GetById(torrentId);
|
||||||
|
|
||||||
if (torrent != null)
|
if (torrent == null)
|
||||||
{
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
await Update(torrent);
|
await Update(torrent);
|
||||||
|
|
||||||
foreach (var download in torrent.Downloads)
|
foreach (var download in torrent.Downloads)
|
||||||
|
|
@ -517,7 +553,6 @@ namespace RdtClient.Service.Services
|
||||||
download.BytesDone = unpackClient.BytesDone;
|
download.BytesDone = unpackClient.BytesDone;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return torrent;
|
return torrent;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<TargetFramework>net5.0</TargetFramework>
|
<TargetFramework>net5.0</TargetFramework>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<UserSecretsId>94c24cba-f03f-4453-a671-3640b517c573</UserSecretsId>
|
<UserSecretsId>94c24cba-f03f-4453-a671-3640b517c573</UserSecretsId>
|
||||||
<Version>1.8.8</Version>
|
<Version>1.8.9</Version>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue