diff --git a/ErsatzTV.Application/Channels/CreateAutoTunedChannelsHandler.cs b/ErsatzTV.Application/Channels/CreateAutoTunedChannelsHandler.cs index 6629871db..e523b558a 100644 --- a/ErsatzTV.Application/Channels/CreateAutoTunedChannelsHandler.cs +++ b/ErsatzTV.Application/Channels/CreateAutoTunedChannelsHandler.cs @@ -92,7 +92,17 @@ public class CreateAutoTunedChannelsHandler(ISender mediator) // Roll back the smart collection we just created so a retry of this // axis/value doesn't fail on SmartCollection-name uniqueness. Best-effort; // the primary outcome below is still Skipped/Failed regardless of the delete result. - await mediator.Send(new DeleteSmartCollection(smartCollection.Id), cancellationToken); + // Swallow any exception (not just an Either.Left) so a transient infra failure + // during rollback never aborts this channel's outcome or the batch; the + // orphaned SmartCollection is an acceptable degraded outcome. + try + { + await mediator.Send(new DeleteSmartCollection(smartCollection.Id), cancellationToken); + } + catch (Exception) + { + // intentionally ignored; see comment above + } AutoTuneOutcomeStatus status = error.Value.Contains(NumberTakenError, StringComparison.Ordinal) ? AutoTuneOutcomeStatus.Skipped