From ea411811e46af4f676480477155b07e089c5319b Mon Sep 17 00:00:00 2001 From: Stanley Dimant Date: Sun, 25 Sep 2022 15:58:03 +0200 Subject: [PATCH] fixes uploads and error during of collection enumeration --- MareSynchronos/FileCacheDB/FileDbManager.cs | 2 +- MareSynchronos/MareSynchronos.csproj | 2 +- .../WebAPI/ApIController.Functions.Files.cs | 24 +++++++------------ 3 files changed, 11 insertions(+), 17 deletions(-) diff --git a/MareSynchronos/FileCacheDB/FileDbManager.cs b/MareSynchronos/FileCacheDB/FileDbManager.cs index 558695a..b2d1a94 100644 --- a/MareSynchronos/FileCacheDB/FileDbManager.cs +++ b/MareSynchronos/FileCacheDB/FileDbManager.cs @@ -34,7 +34,7 @@ public class FileDbManager 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))); foreach (var entry in cachedEntries) { diff --git a/MareSynchronos/MareSynchronos.csproj b/MareSynchronos/MareSynchronos.csproj index f352afe..13096c0 100644 --- a/MareSynchronos/MareSynchronos.csproj +++ b/MareSynchronos/MareSynchronos.csproj @@ -3,7 +3,7 @@ - 0.4.10 + 0.4.11 https://github.com/Penumbra-Sync/client diff --git a/MareSynchronos/WebAPI/ApIController.Functions.Files.cs b/MareSynchronos/WebAPI/ApIController.Functions.Files.cs index 217d0bc..40babe8 100644 --- a/MareSynchronos/WebAPI/ApIController.Functions.Files.cs +++ b/MareSynchronos/WebAPI/ApIController.Functions.Files.cs @@ -173,13 +173,11 @@ namespace MareSynchronos.WebAPI foreach (var file in filesToUpload.Where(f => !f.IsForbidden)) { - await using var db = new FileCacheContext(); try { CurrentUploads.Add(new UploadFileTransfer(file) { - Total = new FileInfo(db.FileCaches.FirstOrDefault(f => f.Hash.ToLower() == file.Hash.ToLower()) - ?.Filepath ?? string.Empty).Length + Total = new FileInfo(_fileDbManager.GetFileCacheByHash(file.Hash)!.Filepath).Length }); } 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 = db.FileCaches.FirstOrDefault(f => f.Hash == file.Hash)?.Filepath ?? string.Empty - }); - } + LocalFile = _fileDbManager.GetFileCacheByHash(file.Hash)?.Filepath ?? string.Empty + }); } } @@ -271,10 +266,9 @@ namespace MareSynchronos.WebAPI private async Task<(string, byte[])> GetCompressedFileData(string fileHash, CancellationToken uploadToken) { - await using var db = new FileCacheContext(); - var fileCache = db.FileCaches.First(f => f.Hash == fileHash); - return (fileHash, LZ4Codec.WrapHC(await File.ReadAllBytesAsync(fileCache.Filepath, uploadToken), 0, - (int)new FileInfo(fileCache.Filepath).Length)); + var fileCache = _fileDbManager.GetFileCacheByHash(fileHash)!.Filepath; + return (fileHash, LZ4Codec.WrapHC(await File.ReadAllBytesAsync(fileCache, uploadToken), 0, + (int)new FileInfo(fileCache).Length)); } private async Task UploadFile(byte[] compressedFile, string fileHash, CancellationToken uploadToken)