From 9454f2940e2ae2d3b2a026b4c42a1d0ef33d1f24 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Sun, 19 Apr 2026 15:48:18 +0300 Subject: [PATCH] Migrate mediainfo per episode file one at the time to avoid OOM --- .../Migration/225_mediainfo_multiple_streams.cs | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/NzbDrone.Core/Datastore/Migration/225_mediainfo_multiple_streams.cs b/src/NzbDrone.Core/Datastore/Migration/225_mediainfo_multiple_streams.cs index 48e616158..f743a88c0 100644 --- a/src/NzbDrone.Core/Datastore/Migration/225_mediainfo_multiple_streams.cs +++ b/src/NzbDrone.Core/Datastore/Migration/225_mediainfo_multiple_streams.cs @@ -46,8 +46,6 @@ private void MigrateMediaInfoToMultipleStreams(IDbConnection conn, IDbTransactio { var existing = conn.Query("SELECT \"Id\", \"MediaInfo\" FROM \"EpisodeFiles\""); - var updated = new List(); - foreach (var row in existing) { if (row.MediaInfo.IsNullOrWhiteSpace()) @@ -64,7 +62,7 @@ private void MigrateMediaInfoToMultipleStreams(IDbConnection conn, IDbTransactio { _logger.Warn(ex, "Episode {EpisodeId} contains invalid JSON data, skipping.", row.Id); - updated.Add(new EpisodeFile225 { Id = row.Id, MediaInfo = null }); + UpdateMediaInfoForEpisodeFile(conn, tran, new EpisodeFile225 { Id = row.Id, MediaInfo = null }); continue; } @@ -83,17 +81,17 @@ private void MigrateMediaInfoToMultipleStreams(IDbConnection conn, IDbTransactio continue; } - updated.Add(new EpisodeFile225 + UpdateMediaInfoForEpisodeFile(conn, tran, new EpisodeFile225 { Id = row.Id, MediaInfo = JsonSerializer.Serialize(newMediaInfo, _serializerSettings) }); } + } - conn.Execute( - "UPDATE \"EpisodeFiles\" SET \"MediaInfo\" = @MediaInfo WHERE \"Id\" = @Id", - updated, - transaction: tran); + private static void UpdateMediaInfoForEpisodeFile(IDbConnection conn, IDbTransaction tran, EpisodeFile225 updated) + { + conn.Execute("UPDATE \"EpisodeFiles\" SET \"MediaInfo\" = @MediaInfo WHERE \"Id\" = @Id", updated, transaction: tran); } private static MediaInfo225 MigrateMediaInfo(MediaInfo224 old)