From 1c370dfd242a9e20bad419de95a198bd5f3658aa Mon Sep 17 00:00:00 2001 From: Kieran Date: Sun, 9 Apr 2023 14:26:51 +0100 Subject: [PATCH] Catch exceptions in expired deletion service --- .../Services/Background/DeleteExpiredFiles.cs | 44 +++++++++++-------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/VoidCat/Services/Background/DeleteExpiredFiles.cs b/VoidCat/Services/Background/DeleteExpiredFiles.cs index d4a757c..d337346 100644 --- a/VoidCat/Services/Background/DeleteExpiredFiles.cs +++ b/VoidCat/Services/Background/DeleteExpiredFiles.cs @@ -22,28 +22,36 @@ public sealed class DeleteExpiredFiles : BackgroundService { while (!stoppingToken.IsCancellationRequested) { - using var scope = _scopeFactory.CreateScope(); - var metadata = scope.ServiceProvider.GetRequiredService(); - var fileInfoManager = scope.ServiceProvider.GetRequiredService(); - var fileStoreFactory = scope.ServiceProvider.GetRequiredService(); - - var files = await metadata.ListFiles(new(0, int.MaxValue)); - await foreach (var f in files.Results.WithCancellation(stoppingToken)) + try { - try - { - if (f.Expires < DateTime.Now) - { - await fileStoreFactory.DeleteFile(f.Id); - await fileInfoManager.Delete(f.Id); + using var scope = _scopeFactory.CreateScope(); + var metadata = scope.ServiceProvider.GetRequiredService(); + var fileInfoManager = scope.ServiceProvider.GetRequiredService(); + var fileStoreFactory = scope.ServiceProvider.GetRequiredService(); - _logger.LogInformation("Deleted file: {Id}", f.Id); + var files = await metadata.ListFiles(new(0, int.MaxValue)); + await foreach (var f in files.Results.WithCancellation(stoppingToken)) + { + try + { + if (f.Expires < DateTime.Now) + { + await fileStoreFactory.DeleteFile(f.Id); + await fileInfoManager.Delete(f.Id); + + _logger.LogInformation("Deleted file: {Id}", f.Id); + } + } + catch (Exception ex) + { + _logger.LogError(ex, "Failed to delete file: {Id}", f.Id); } } - catch (Exception ex) - { - _logger.LogError(ex, "Failed to delete file: {Id}", f.Id); - } + + } + catch (Exception ex) + { + _logger.LogError(ex, "Failed to run delete expired file services"); } await Task.Delay(TimeSpan.FromMinutes(5), stoppingToken);