fixes uploads and error during of collection enumeration

This commit is contained in:
Stanley Dimant
2022-09-25 15:58:03 +02:00
parent 8c535828b9
commit ea411811e4
3 changed files with 11 additions and 17 deletions

View File

@@ -34,7 +34,7 @@ public class FileDbManager
if (matchingEntries.Any(f => f.Filepath.Contains(PenumbraPrefix) && matchingEntries.Any(f => f.Filepath.Contains(CachePrefix)))) if (matchingEntries.Any(f => f.Filepath.Contains(PenumbraPrefix) && matchingEntries.Any(f => f.Filepath.Contains(CachePrefix))))
{ {
var cachedEntries = matchingEntries.Where(f => f.Filepath.Contains(CachePrefix)); var cachedEntries = matchingEntries.Where(f => f.Filepath.Contains(CachePrefix)).ToList();
DeleteFromDatabase(cachedEntries.Select(f => new FileCache(f))); DeleteFromDatabase(cachedEntries.Select(f => new FileCache(f)));
foreach (var entry in cachedEntries) foreach (var entry in cachedEntries)
{ {

View File

@@ -3,7 +3,7 @@
<PropertyGroup> <PropertyGroup>
<Authors></Authors> <Authors></Authors>
<Company></Company> <Company></Company>
<Version>0.4.10</Version> <Version>0.4.11</Version>
<Description></Description> <Description></Description>
<Copyright></Copyright> <Copyright></Copyright>
<PackageProjectUrl>https://github.com/Penumbra-Sync/client</PackageProjectUrl> <PackageProjectUrl>https://github.com/Penumbra-Sync/client</PackageProjectUrl>

View File

@@ -173,13 +173,11 @@ namespace MareSynchronos.WebAPI
foreach (var file in filesToUpload.Where(f => !f.IsForbidden)) foreach (var file in filesToUpload.Where(f => !f.IsForbidden))
{ {
await using var db = new FileCacheContext();
try try
{ {
CurrentUploads.Add(new UploadFileTransfer(file) CurrentUploads.Add(new UploadFileTransfer(file)
{ {
Total = new FileInfo(db.FileCaches.FirstOrDefault(f => f.Hash.ToLower() == file.Hash.ToLower()) Total = new FileInfo(_fileDbManager.GetFileCacheByHash(file.Hash)!.Filepath).Length
?.Filepath ?? string.Empty).Length
}); });
} }
catch (Exception ex) catch (Exception ex)
@@ -189,17 +187,14 @@ namespace MareSynchronos.WebAPI
} }
} }
await using (var db = new FileCacheContext()) foreach (var file in filesToUpload.Where(c => c.IsForbidden))
{ {
foreach (var file in filesToUpload.Where(c => c.IsForbidden)) if (ForbiddenTransfers.All(f => f.Hash != file.Hash))
{ {
if (ForbiddenTransfers.All(f => f.Hash != file.Hash)) ForbiddenTransfers.Add(new UploadFileTransfer(file)
{ {
ForbiddenTransfers.Add(new UploadFileTransfer(file) LocalFile = _fileDbManager.GetFileCacheByHash(file.Hash)?.Filepath ?? string.Empty
{ });
LocalFile = db.FileCaches.FirstOrDefault(f => f.Hash == file.Hash)?.Filepath ?? string.Empty
});
}
} }
} }
@@ -271,10 +266,9 @@ namespace MareSynchronos.WebAPI
private async Task<(string, byte[])> GetCompressedFileData(string fileHash, CancellationToken uploadToken) private async Task<(string, byte[])> GetCompressedFileData(string fileHash, CancellationToken uploadToken)
{ {
await using var db = new FileCacheContext(); var fileCache = _fileDbManager.GetFileCacheByHash(fileHash)!.Filepath;
var fileCache = db.FileCaches.First(f => f.Hash == fileHash); return (fileHash, LZ4Codec.WrapHC(await File.ReadAllBytesAsync(fileCache, uploadToken), 0,
return (fileHash, LZ4Codec.WrapHC(await File.ReadAllBytesAsync(fileCache.Filepath, uploadToken), 0, (int)new FileInfo(fileCache).Length));
(int)new FileInfo(fileCache.Filepath).Length));
} }
private async Task UploadFile(byte[] compressedFile, string fileHash, CancellationToken uploadToken) private async Task UploadFile(byte[] compressedFile, string fileHash, CancellationToken uploadToken)