Migrate mediainfo per episode file one at the time to avoid OOM

This commit is contained in:
Bogdan 2026-04-19 15:48:18 +03:00 committed by Mark McDowall
parent 1c09c6005c
commit 9454f2940e

View file

@ -46,8 +46,6 @@ private void MigrateMediaInfoToMultipleStreams(IDbConnection conn, IDbTransactio
{
var existing = conn.Query<EpisodeFile224>("SELECT \"Id\", \"MediaInfo\" FROM \"EpisodeFiles\"");
var updated = new List<object>();
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)