Properly handle cancellation in MediaSegmentManager

This commit is contained in:
Shadowghost
2026-05-13 13:47:07 +02:00
parent 5165e4e2d4
commit 38bda65ca9

View File

@@ -81,6 +81,11 @@ public class MediaSegmentManager : IMediaSegmentManager
foreach (var provider in providers)
{
if (cancellationToken.IsCancellationRequested)
{
break;
}
if (!await provider.Supports(baseItem).ConfigureAwait(false))
{
_logger.LogDebug("Media Segment provider {ProviderName} does not support item with path {MediaPath}", provider.Name, baseItem.Path);
@@ -146,6 +151,15 @@ public class MediaSegmentManager : IMediaSegmentManager
await CreateSegmentAsync(segment, providerId).ConfigureAwait(false);
}
}
catch (OperationCanceledException) when (cancellationToken.IsCancellationRequested)
{
throw;
}
catch (Exception ex) when (cancellationToken.IsCancellationRequested)
{
_logger.LogDebug(ex, "Provider {ProviderName} aborted segment extraction for {MediaPath} due to shutdown", provider.Name, baseItem.Path);
break;
}
catch (Exception ex)
{
_logger.LogError(ex, "Provider {ProviderName} failed to extract segments from {MediaPath}", provider.Name, baseItem.Path);