Ver código fonte

Merge pull request #9987 from Sky-High/fix-migration

Bond-009 1 ano atrás
pai
commit
9de667f8ce

+ 3 - 1
Jellyfin.Server/Migrations/MigrationRunner.cs

@@ -93,7 +93,7 @@ namespace Jellyfin.Server.Migrations
 
         private static void HandleStartupWizardCondition(IEnumerable<IMigrationRoutine> migrations, MigrationOptions migrationOptions, bool isStartWizardCompleted, ILogger logger)
         {
-            if (isStartWizardCompleted || migrationOptions.Applied.Count != 0)
+            if (isStartWizardCompleted)
             {
                 return;
             }
@@ -106,6 +106,8 @@ namespace Jellyfin.Server.Migrations
 
         private static void PerformMigrations(IMigrationRoutine[] migrations, MigrationOptions migrationOptions, Action<MigrationOptions> saveConfiguration, ILogger logger)
         {
+            // save already applied migrations, and skip them thereafter
+            saveConfiguration(migrationOptions);
             var appliedMigrationIds = migrationOptions.Applied.Select(m => m.Id).ToHashSet();
 
             for (var i = 0; i < migrations.Length; i++)

+ 22 - 5
Jellyfin.Server/Migrations/PreStartupRoutines/MigrateNetworkConfiguration.cs

@@ -1,4 +1,4 @@
-using System;
+using System;
 using System.IO;
 using System.Xml;
 using System.Xml.Serialization;
@@ -39,8 +39,23 @@ public class MigrateNetworkConfiguration : IMigrationRoutine
     {
         string path = Path.Combine(_applicationPaths.ConfigurationDirectoryPath, "network.xml");
         var oldNetworkConfigSerializer = new XmlSerializer(typeof(OldNetworkConfiguration), new XmlRootAttribute("NetworkConfiguration"));
-        using var xmlReader = XmlReader.Create(path);
-        var oldNetworkConfiguration = (OldNetworkConfiguration?)oldNetworkConfigSerializer.Deserialize(xmlReader);
+        OldNetworkConfiguration? oldNetworkConfiguration = null;
+
+        try
+        {
+            using (var xmlReader = XmlReader.Create(path))
+            {
+                oldNetworkConfiguration = (OldNetworkConfiguration?)oldNetworkConfigSerializer.Deserialize(xmlReader);
+            }
+        }
+        catch (InvalidOperationException ex)
+        {
+            _logger.LogError(ex, "Migrate NetworkConfiguration deserialize Invalid Operation error");
+        }
+        catch (Exception ex)
+        {
+            _logger.LogError(ex, "Migrate NetworkConfiguration deserialize error");
+        }
 
         if (oldNetworkConfiguration is not null)
         {
@@ -82,8 +97,10 @@ public class MigrateNetworkConfiguration : IMigrationRoutine
 
             var networkConfigSerializer = new XmlSerializer(typeof(NetworkConfiguration));
             var xmlWriterSettings = new XmlWriterSettings { Indent = true };
-            using var xmlWriter = XmlWriter.Create(path, xmlWriterSettings);
-            networkConfigSerializer.Serialize(xmlWriter, networkConfiguration);
+            using (var xmlWriter = XmlWriter.Create(path, xmlWriterSettings))
+            {
+                networkConfigSerializer.Serialize(xmlWriter, networkConfiguration);
+            }
         }
     }