From e9ee0ef1f5848170f3de2dbde78c3b7d1f811eaa Mon Sep 17 00:00:00 2001 From: gnattu Date: Sun, 3 Nov 2024 04:11:41 +0800 Subject: [PATCH] Remove temp file even when saving failed --- .../Manager/ProviderManager.cs | 32 ++++++++++++++++--- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs index 3c65d49a86..bfc8ee3e15 100644 --- a/MediaBrowser.Providers/Manager/ProviderManager.cs +++ b/MediaBrowser.Providers/Manager/ProviderManager.cs @@ -258,15 +258,37 @@ namespace MediaBrowser.Providers.Manager throw new ArgumentNullException(nameof(source)); } - var fileStream = AsyncFile.OpenRead(source); - await new ImageSaver(_configurationManager, _libraryMonitor, _fileSystem, _logger).SaveImage(item, fileStream, mimeType, type, imageIndex, saveLocallyWithMedia, cancellationToken); + Exception? saveException = null; + try { - File.Delete(source); + var fileStream = AsyncFile.OpenRead(source); + await new ImageSaver(_configurationManager, _libraryMonitor, _fileSystem, _logger).SaveImage(item, fileStream, mimeType, type, imageIndex, saveLocallyWithMedia, cancellationToken); } - catch (IOException ex) + catch (Exception ex) { - _logger.LogError(ex, "Source file {Source} not found or in use, skip removing", source); + saveException = ex; + _logger.LogError(ex, "Unable to save image {Source}", source); + } + finally + { + try + { + File.Delete(source); + } + catch (IOException ex) + { + _logger.LogError(ex, "Source file {Source} not found or in use, skip removing", source); + } + catch (Exception ex) + { + saveException ??= ex; + } + } + + if (saveException is not null) + { + throw saveException; } }