diff options
| author | Fernando Fernández <ferferga@hotmail.com> | 2025-03-23 01:30:32 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-22 18:30:32 -0600 |
| commit | c77a0719c28ec6744c0618c18e93f2b36c7d95f8 (patch) | |
| tree | 8e0e8812a0dce59eb7717479e0a49399529f838b /Jellyfin.Server/Migrations/Routines/MigrateLibraryDb.cs | |
| parent | 350983e03cc354e083cccdd156d3672cc7125685 (diff) | |
Clear dictionaries when not needed, use set for finding existing base items (#13749)
Diffstat (limited to 'Jellyfin.Server/Migrations/Routines/MigrateLibraryDb.cs')
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/MigrateLibraryDb.cs | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/Jellyfin.Server/Migrations/Routines/MigrateLibraryDb.cs b/Jellyfin.Server/Migrations/Routines/MigrateLibraryDb.cs index dfe497c49..d2fbcbec9 100644 --- a/Jellyfin.Server/Migrations/Routines/MigrateLibraryDb.cs +++ b/Jellyfin.Server/Migrations/Routines/MigrateLibraryDb.cs @@ -163,7 +163,6 @@ public class MigrateLibraryDb : IMigrationRoutine dbContext.UserData.ExecuteDelete(); var users = dbContext.Users.AsNoTracking().ToImmutableArray(); - var oldUserdata = new Dictionary<string, UserData>(); foreach (var entity in queryResult) { @@ -184,6 +183,8 @@ public class MigrateLibraryDb : IMigrationRoutine dbContext.UserData.Add(userData); } + users.Clear(); + legacyBaseItemWithUserKeys.Clear(); _logger.LogInformation("Try saving {0} UserData entries.", dbContext.UserData.Local.Count); dbContext.SaveChanges(); @@ -220,11 +221,12 @@ public class MigrateLibraryDb : IMigrationRoutine dbContext.PeopleBaseItemMap.ExecuteDelete(); var peopleCache = new Dictionary<string, (People Person, List<PeopleBaseItemMap> Items)>(); + var baseItemIds = dbContext.BaseItems.Select(b => b.Id).ToHashSet(); foreach (SqliteDataReader reader in connection.Query(personsQuery)) { var itemId = reader.GetGuid(0); - if (!dbContext.BaseItems.Any(f => f.Id == itemId)) + if (!baseItemIds.Contains(itemId)) { _logger.LogError("Dont save person {0} because its not in use by any BaseItem", reader.GetString(1)); continue; @@ -256,12 +258,16 @@ public class MigrateLibraryDb : IMigrationRoutine }); } + baseItemIds.Clear(); + foreach (var item in peopleCache) { dbContext.Peoples.Add(item.Value.Person); dbContext.PeopleBaseItemMap.AddRange(item.Value.Items.DistinctBy(e => (e.ItemId, e.PeopleId))); } + peopleCache.Clear(); + _logger.LogInformation("Try saving {0} People entries.", dbContext.MediaStreamInfos.Local.Count); dbContext.SaveChanges(); migrationTotalTime += stopwatch.Elapsed; |
