aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Server
diff options
context:
space:
mode:
Diffstat (limited to 'Jellyfin.Server')
-rw-r--r--Jellyfin.Server/Migrations/MigrationRunner.cs33
1 files changed, 27 insertions, 6 deletions
diff --git a/Jellyfin.Server/Migrations/MigrationRunner.cs b/Jellyfin.Server/Migrations/MigrationRunner.cs
index c3a2e1bc4..c223576da 100644
--- a/Jellyfin.Server/Migrations/MigrationRunner.cs
+++ b/Jellyfin.Server/Migrations/MigrationRunner.cs
@@ -149,11 +149,18 @@ namespace Jellyfin.Server.Migrations
}
}
+ List<IMigrationRoutine> databaseMigrations = [];
try
{
foreach (var migrationRoutine in migrationsToBeApplied)
{
logger.LogInformation("Applying migration '{Name}'", migrationRoutine.Name);
+ var isDbMigration = migrationRoutine is IDatabaseMigrationRoutine;
+
+ if (isDbMigration)
+ {
+ databaseMigrations.Add(migrationRoutine);
+ }
try
{
@@ -167,17 +174,31 @@ namespace Jellyfin.Server.Migrations
// Mark the migration as completed
logger.LogInformation("Migration '{Name}' applied successfully", migrationRoutine.Name);
- migrationOptions.Applied.Add((migrationRoutine.Id, migrationRoutine.Name));
- saveConfiguration(migrationOptions);
- logger.LogDebug("Migration '{Name}' marked as applied in configuration.", migrationRoutine.Name);
+ if (!isDbMigration)
+ {
+ migrationOptions.Applied.Add((migrationRoutine.Id, migrationRoutine.Name));
+ saveConfiguration(migrationOptions);
+ logger.LogDebug("Migration '{Name}' marked as applied in configuration.", migrationRoutine.Name);
+ }
}
}
- catch (System.Exception) when (migrationKey is not null && jellyfinDatabaseProvider is not null)
+ catch (Exception) when (migrationKey is not null && jellyfinDatabaseProvider is not null)
{
- logger.LogInformation("Rollback on database as migration reported failure.");
- await jellyfinDatabaseProvider.RestoreBackupFast(migrationKey, CancellationToken.None).ConfigureAwait(false);
+ if (databaseMigrations.Count != 0)
+ {
+ logger.LogInformation("Rolling back database as migrations reported failure.");
+ await jellyfinDatabaseProvider.RestoreBackupFast(migrationKey, CancellationToken.None).ConfigureAwait(false);
+ }
+
throw;
}
+
+ foreach (var migrationRoutine in databaseMigrations)
+ {
+ migrationOptions.Applied.Add((migrationRoutine.Id, migrationRoutine.Name));
+ saveConfiguration(migrationOptions);
+ logger.LogDebug("Migration '{Name}' marked as applied in configuration.", migrationRoutine.Name);
+ }
}
}
}