From e2b2227a17044b059426eddd895a2ddfd0ed2fe6 Mon Sep 17 00:00:00 2001 From: admin Date: Fri, 19 Dec 2025 09:26:41 -0600 Subject: [PATCH] Fix blocking semaphore in MediaCoverService MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Convert _semaphore.Wait() to async pattern with WaitAsync() to prevent thread blocking during image resizing operations. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- src/NzbDrone.Core/MediaCover/MediaCoverService.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/NzbDrone.Core/MediaCover/MediaCoverService.cs b/src/NzbDrone.Core/MediaCover/MediaCoverService.cs index 223dd0d939..55c72ae92f 100644 --- a/src/NzbDrone.Core/MediaCover/MediaCoverService.cs +++ b/src/NzbDrone.Core/MediaCover/MediaCoverService.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Net; using System.Threading; +using System.Threading.Tasks; using NLog; using NzbDrone.Common; using NzbDrone.Common.Disk; @@ -141,7 +142,7 @@ private string GetMovieCoverPath(int movieId) return Path.Combine(_coverRootFolder, movieId.ToString()); } - private bool EnsureCovers(Movie movie) + private async Task EnsureCoversAsync(Movie movie) { var updated = false; var toResize = new List>(); @@ -184,7 +185,7 @@ private bool EnsureCovers(Movie movie) try { - _semaphore.Wait(); + await _semaphore.WaitAsync(); foreach (var tuple in toResize) { @@ -261,9 +262,9 @@ private static string GetExtension(MediaCoverTypes coverType) }; } - public void HandleAsync(MovieUpdatedEvent message) + public async void HandleAsync(MovieUpdatedEvent message) { - var updated = EnsureCovers(message.Movie); + var updated = await EnsureCoversAsync(message.Movie); _eventAggregator.PublishEvent(new MediaCoversUpdatedEvent(message.Movie, updated)); }