From c22f24319bdfac814fc73fe61713a088b2b9f108 Mon Sep 17 00:00:00 2001 From: Tim Eisele Date: Thu, 12 Jun 2025 01:31:14 +0200 Subject: Properly handle file access issues in some cases (#14272) --- .../Library/ExternalDataManager.cs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'Emby.Server.Implementations/Library/ExternalDataManager.cs') diff --git a/Emby.Server.Implementations/Library/ExternalDataManager.cs b/Emby.Server.Implementations/Library/ExternalDataManager.cs index 68e3aaff4..d3cfa1d25 100644 --- a/Emby.Server.Implementations/Library/ExternalDataManager.cs +++ b/Emby.Server.Implementations/Library/ExternalDataManager.cs @@ -1,3 +1,4 @@ +using System; using System.IO; using System.Linq; using System.Threading; @@ -6,6 +7,7 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.IO; using MediaBrowser.Controller.MediaSegments; using MediaBrowser.Controller.Trickplay; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Library; @@ -18,6 +20,7 @@ public class ExternalDataManager : IExternalDataManager private readonly IMediaSegmentManager _mediaSegmentManager; private readonly IPathManager _pathManager; private readonly ITrickplayManager _trickplayManager; + private readonly ILogger _logger; /// /// Initializes a new instance of the class. @@ -26,16 +29,19 @@ public class ExternalDataManager : IExternalDataManager /// The media segment manager. /// The path manager. /// The trickplay manager. + /// The logger. public ExternalDataManager( IKeyframeManager keyframeManager, IMediaSegmentManager mediaSegmentManager, IPathManager pathManager, - ITrickplayManager trickplayManager) + ITrickplayManager trickplayManager, + ILogger logger) { _keyframeManager = keyframeManager; _mediaSegmentManager = mediaSegmentManager; _pathManager = pathManager; _trickplayManager = trickplayManager; + _logger = logger; } /// @@ -47,7 +53,14 @@ public class ExternalDataManager : IExternalDataManager { foreach (var path in validPaths) { - Directory.Delete(path, true); + try + { + Directory.Delete(path, true); + } + catch (Exception ex) + { + _logger.LogWarning("Unable to prune external item data at {Path}: {Exception}", path, ex); + } } } -- cgit v1.2.3