File Cache Checks

Reviewed-on: #35
This commit was merged in pull request #35.
This commit is contained in:
2025-09-30 16:46:40 +02:00

View File

@@ -188,8 +188,15 @@ public sealed class FileCacheManager : IHostedService
StringComparer.OrdinalIgnoreCase); StringComparer.OrdinalIgnoreCase);
Parallel.ForEach(allEntities, entity => Parallel.ForEach(allEntities, entity =>
{
if (entity != null && entity.PrefixedFilePath != null)
{ {
cacheDict[entity.PrefixedFilePath] = entity; cacheDict[entity.PrefixedFilePath] = entity;
}
else
{
_logger.LogWarning("Null FileCacheEntity or PrefixedFilePath encountered in cache population: {entity}", entity);
}
}); });
var cleanedPaths = new ConcurrentDictionary<string, string>(StringComparer.OrdinalIgnoreCase); var cleanedPaths = new ConcurrentDictionary<string, string>(StringComparer.OrdinalIgnoreCase);
@@ -253,6 +260,7 @@ public sealed class FileCacheManager : IHostedService
{ {
if (_fileCaches.TryGetValue(hash, out var caches)) if (_fileCaches.TryGetValue(hash, out var caches))
{ {
_logger.LogTrace("Removing from DB: {hash} => {path}", hash, prefixedFilePath);
var removedCount = caches?.RemoveAll(c => string.Equals(c.PrefixedFilePath, prefixedFilePath, StringComparison.Ordinal)); var removedCount = caches?.RemoveAll(c => string.Equals(c.PrefixedFilePath, prefixedFilePath, StringComparison.Ordinal));
_logger.LogTrace("Removed from DB: {count} file(s) with hash {hash} and file cache {path}", removedCount, hash, prefixedFilePath); _logger.LogTrace("Removed from DB: {count} file(s) with hash {hash} and file cache {path}", removedCount, hash, prefixedFilePath);
@@ -397,6 +405,12 @@ public sealed class FileCacheManager : IHostedService
private FileCacheEntity? Validate(FileCacheEntity fileCache) private FileCacheEntity? Validate(FileCacheEntity fileCache)
{ {
if (string.IsNullOrWhiteSpace(fileCache.ResolvedFilepath))
{
_logger.LogWarning("FileCacheEntity has empty ResolvedFilepath for hash {hash}, prefixed path {prefixed}", fileCache.Hash, fileCache.PrefixedFilePath);
RemoveHashedFile(fileCache.Hash, fileCache.PrefixedFilePath);
return null;
}
var file = new FileInfo(fileCache.ResolvedFilepath); var file = new FileInfo(fileCache.ResolvedFilepath);
if (!file.Exists) if (!file.Exists)
{ {