mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-05-31 20:24:21 -04:00
Clear dictionaries when not needed, use set for finding existing base items (#13749)
This commit is contained in:
parent
350983e03c
commit
c77a0719c2
@ -163,7 +163,6 @@ public class MigrateLibraryDb : IMigrationRoutine
|
|||||||
dbContext.UserData.ExecuteDelete();
|
dbContext.UserData.ExecuteDelete();
|
||||||
|
|
||||||
var users = dbContext.Users.AsNoTracking().ToImmutableArray();
|
var users = dbContext.Users.AsNoTracking().ToImmutableArray();
|
||||||
var oldUserdata = new Dictionary<string, UserData>();
|
|
||||||
|
|
||||||
foreach (var entity in queryResult)
|
foreach (var entity in queryResult)
|
||||||
{
|
{
|
||||||
@ -184,6 +183,8 @@ public class MigrateLibraryDb : IMigrationRoutine
|
|||||||
dbContext.UserData.Add(userData);
|
dbContext.UserData.Add(userData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
users.Clear();
|
||||||
|
legacyBaseItemWithUserKeys.Clear();
|
||||||
_logger.LogInformation("Try saving {0} UserData entries.", dbContext.UserData.Local.Count);
|
_logger.LogInformation("Try saving {0} UserData entries.", dbContext.UserData.Local.Count);
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
|
|
||||||
@ -220,11 +221,12 @@ public class MigrateLibraryDb : IMigrationRoutine
|
|||||||
dbContext.PeopleBaseItemMap.ExecuteDelete();
|
dbContext.PeopleBaseItemMap.ExecuteDelete();
|
||||||
|
|
||||||
var peopleCache = new Dictionary<string, (People Person, List<PeopleBaseItemMap> Items)>();
|
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))
|
foreach (SqliteDataReader reader in connection.Query(personsQuery))
|
||||||
{
|
{
|
||||||
var itemId = reader.GetGuid(0);
|
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));
|
_logger.LogError("Dont save person {0} because its not in use by any BaseItem", reader.GetString(1));
|
||||||
continue;
|
continue;
|
||||||
@ -256,12 +258,16 @@ public class MigrateLibraryDb : IMigrationRoutine
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
baseItemIds.Clear();
|
||||||
|
|
||||||
foreach (var item in peopleCache)
|
foreach (var item in peopleCache)
|
||||||
{
|
{
|
||||||
dbContext.Peoples.Add(item.Value.Person);
|
dbContext.Peoples.Add(item.Value.Person);
|
||||||
dbContext.PeopleBaseItemMap.AddRange(item.Value.Items.DistinctBy(e => (e.ItemId, e.PeopleId)));
|
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);
|
_logger.LogInformation("Try saving {0} People entries.", dbContext.MediaStreamInfos.Local.Count);
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
migrationTotalTime += stopwatch.Elapsed;
|
migrationTotalTime += stopwatch.Elapsed;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user