diff --git a/CHANGELOG.md b/CHANGELOG.md index 9dfa8055f..e1d10778e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Fix case where specifically-crafted requests could access management UI over streaming port - Fix Plex page staying disabled until restart when a sign-in is not completed within two minutes, or when plex.tv cannot be reached - Fix Plex page showing no indication that ErsatzTV has been signed out of Plex +- Fix mirror channels falling out of sync when using the next streaming engine ## [26.8.0] - 2026-08-20 ### Added diff --git a/ErsatzTV.Application/Playouts/Commands/BuildPlayoutHandler.cs b/ErsatzTV.Application/Playouts/Commands/BuildPlayoutHandler.cs index 91e49ed6a..c6036ee51 100644 --- a/ErsatzTV.Application/Playouts/Commands/BuildPlayoutHandler.cs +++ b/ErsatzTV.Application/Playouts/Commands/BuildPlayoutHandler.cs @@ -312,6 +312,12 @@ public class BuildPlayoutHandler : IRequestHandler maybeMirrors = await dbContext.Channels + .AsNoTracking() + .Filter(c => c.MirrorSourceChannelId == referenceData.Channel.Id) + .Map(c => c.Number) + .ToListAsync(cancellationToken); + string fileName = Path.Combine(FileSystemLayout.ChannelGuideCacheFolder, $"{channelNumber}.xml"); if (hasChanges || !File.Exists(fileName) || playout.ScheduleKind is PlayoutScheduleKind.ExternalJson) @@ -319,11 +325,6 @@ public class BuildPlayoutHandler : IRequestHandler maybeMirrors = await dbContext.Channels - .AsNoTracking() - .Filter(c => c.MirrorSourceChannelId == referenceData.Channel.Id) - .Map(c => c.Number) - .ToListAsync(cancellationToken); foreach (string mirror in maybeMirrors) { await _workerChannel.WriteAsync(new RefreshChannelData(mirror), cancellationToken); @@ -331,6 +332,10 @@ public class BuildPlayoutHandler : IRequestHandler