Skip to content

Commit 6ead898

Browse files
committed
Skip failed reading of metadata
1 parent 928c54d commit 6ead898

1 file changed

Lines changed: 24 additions & 4 deletions

File tree

src/ImageWizard.Core/Caches/Files/FileCache.cs

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using ImageWizard.Cleanup;
66
using ImageWizard.Core.Json;
77
using Microsoft.AspNetCore.Hosting;
8+
using Microsoft.Extensions.Logging;
89
using Microsoft.Extensions.Options;
910
using System.Text.Json;
1011

@@ -15,10 +16,15 @@ namespace ImageWizard.Caches;
1516
/// </summary>
1617
public class FileCache : ICache, ICleanupCache, ILastAccessCache
1718
{
18-
public FileCache(IOptions<FileCacheOptions> options, IWebHostEnvironment hostingEnvironment, ICacheLock cacheLock)
19+
public FileCache(
20+
IOptions<FileCacheOptions> options,
21+
IWebHostEnvironment hostingEnvironment,
22+
ICacheLock cacheLock,
23+
ILogger<FileCache> logger)
1924
{
2025
Options = options;
2126
CacheLock = cacheLock;
27+
Logger = logger;
2228

2329
if (Path.IsPathFullyQualified(options.Value.Folder))
2430
{
@@ -45,6 +51,11 @@ public FileCache(IOptions<FileCacheOptions> options, IWebHostEnvironment hosting
4551
/// </summary>
4652
private ICacheLock CacheLock { get; }
4753

54+
/// <summary>
55+
/// Logger
56+
/// </summary>
57+
private ILogger<FileCache> Logger { get; }
58+
4859
protected FileInfo GetFileInfo(FileType type, string key)
4960
{
5061
string typeString = type.ToTypeString();
@@ -99,7 +110,7 @@ public virtual async Task WriteAsync(IMetadata metadata, Stream stream)
99110
//delete existing data
100111
blobStream.SetLength(0);
101112

102-
await stream.CopyToAsync(blobStream);
113+
await stream.CopyToAsync(blobStream);
103114
}
104115

105116
private async Task<Metadata?> ReadMetadataAsync(string key)
@@ -113,9 +124,18 @@ public virtual async Task WriteAsync(IMetadata metadata, Stream stream)
113124

114125
using Stream metadataStream = metaFile.OpenRead();
115126

116-
Metadata? metadata = await JsonSerializer.DeserializeAsync(metadataStream, ImageWizardJsonSerializerContext.Default.Metadata);
127+
try
128+
{
129+
Metadata? metadata = await JsonSerializer.DeserializeAsync(metadataStream, ImageWizardJsonSerializerContext.Default.Metadata);
130+
131+
return metadata;
132+
}
133+
catch(Exception ex)
134+
{
135+
Logger.LogWarning(ex, $"Reading metadata is failed for key \"{key}\"");
117136

118-
return metadata;
137+
return null; //simulate "not found".to recreate a new cached data.
138+
}
119139
}
120140

121141
private async Task WriteMetadataAsync(IMetadata metadata)

0 commit comments

Comments
 (0)