fix file cache size calculation exception, add more logging to character data factory, add more resilience into file system scan

This commit is contained in:
Stanley Dimant
2022-07-06 09:14:09 +02:00
parent 54abfd74dc
commit 145dc50f8a
4 changed files with 26 additions and 8 deletions

View File

@@ -8,6 +8,7 @@ using System.Threading.Tasks;
using Dalamud.Logging;
using MareSynchronos.FileCacheDB;
using MareSynchronos.Utils;
using Microsoft.EntityFrameworkCore;
namespace MareSynchronos.Managers
{
@@ -143,7 +144,17 @@ namespace MareSynchronos.Managers
private void RecalculateFileCacheSize()
{
FileCacheSize = Directory.EnumerateFiles(_pluginConfiguration.CacheFolder).Sum(f => new FileInfo(f).Length);
FileCacheSize = Directory.EnumerateFiles(_pluginConfiguration.CacheFolder).Sum(f =>
{
try
{
return new FileInfo(f).Length;
}
catch
{
return 0;
}
});
if (FileCacheSize < (long)_pluginConfiguration.MaxLocalCacheInGiB * 1024 * 1024 * 1024) return;
@@ -288,10 +299,10 @@ namespace MareSynchronos.Managers
{
foreach (var deletion in fileCachesToDelete)
{
var entry = db.FileCaches.SingleOrDefault(f =>
var entries = db.FileCaches.Where(f =>
f.Hash == deletion.Hash && f.Filepath == deletion.Filepath);
if (entry != null)
db.FileCaches.Remove(entry);
if (await entries.AnyAsync(ct))
db.FileCaches.RemoveRange(entries);
}
await db.SaveChangesAsync(ct);
foreach (var entry in fileCachesToAdd)