Store migration names alongside Ids in configuration in order to assist with development/debugging

This commit is contained in:
Mark Monteiro 2020-03-08 17:40:30 +01:00
parent 72bf920291
commit 9e89cbbc3a
2 changed files with 8 additions and 6 deletions

View file

@ -13,12 +13,12 @@ namespace Jellyfin.Server.Migrations
/// </summary>
public MigrationOptions()
{
Applied = new List<Guid>();
Applied = new List<(Guid Id, string Name)>();
}
/// <summary>
/// Gets the list of applied migration routine names.
/// </summary>
public List<Guid> Applied { get; }
public List<(Guid Id, string Name)> Applied { get; }
}
}

View file

@ -33,16 +33,18 @@ namespace Jellyfin.Server.Migrations
{
// If startup wizard is not finished, this is a fresh install.
// Don't run any migrations, just mark all of them as applied.
logger.LogInformation("Marking all known migrations as applied because this is fresh install");
migrationOptions.Applied.AddRange(Migrations.Select(m => m.Id));
logger.LogInformation("Marking all known migrations as applied because this is a fresh install");
migrationOptions.Applied.AddRange(Migrations.Select(m => (m.Id, m.Name)));
host.ServerConfigurationManager.SaveConfiguration(MigrationsListStore.StoreKey, migrationOptions);
return;
}
var appliedMigrationIds = migrationOptions.Applied.Select(m => m.Id).ToHashSet();
for (var i = 0; i < Migrations.Length; i++)
{
var migrationRoutine = Migrations[i];
if (migrationOptions.Applied.Contains(migrationRoutine.Id))
if (appliedMigrationIds.Contains(migrationRoutine.Id))
{
logger.LogDebug("Skipping migration '{Name}' since it is already applied", migrationRoutine.Name);
continue;
@ -62,7 +64,7 @@ namespace Jellyfin.Server.Migrations
// Mark the migration as completed
logger.LogInformation("Migration '{Name}' applied successfully", migrationRoutine.Name);
migrationOptions.Applied.Add(migrationRoutine.Id);
migrationOptions.Applied.Add((migrationRoutine.Id, migrationRoutine.Name));
host.ServerConfigurationManager.SaveConfiguration(MigrationsListStore.StoreKey, migrationOptions);
logger.LogDebug("Migration '{Name}' marked as applied in configuration.", migrationRoutine.Name);
}