diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationService.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationService.java index 2f29e4ec9e7e892b8d811c9a76a8f541121262db..b5aaf0f9148649e4f1ce179ffaa3d0517085ec87 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationService.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationService.java @@ -44,7 +44,7 @@ public class MigrationService this.transactionRepository = transactionRepository; this.templateRepository = templateRepository; this.databaseConfig = databaseConfig; - this.migrationTask = new MigrationTask(applicationSupportFolder); + this.migrationTask = new MigrationTask(applicationSupportFolder, settingsService); this.scheduler = scheduler; } diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationTask.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationTask.java index 99bce21bd48fdd08b8057af651242a58d106c908..60f5340d3807d0410832f4150cae146e5fad6816 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationTask.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationTask.java @@ -1,5 +1,6 @@ package de.deadlocker8.budgetmaster.migration; +import de.deadlocker8.budgetmaster.settings.SettingsService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -27,14 +28,17 @@ public class MigrationTask implements Runnable private final Path applicationSupportFolder; + private final SettingsService settingsService; + private MigrationArguments migrationArguments; private MigrationStatus migrationStatus; private List<String> collectedStdout; private List<String> summary; - public MigrationTask(Path applicationSupportFolder) + public MigrationTask(Path applicationSupportFolder, SettingsService settingsService) { this.applicationSupportFolder = applicationSupportFolder; + this.settingsService = settingsService; this.migrationStatus = MigrationStatus.NOT_RUNNING; } @@ -72,6 +76,11 @@ public class MigrationTask implements Runnable } finally { + // if any error happens during migration the settings table might be still empty and lead to errors + // and an infinite progress indicator loop during fetch of the migration status due to SettingsAdvice.class + // Therefore ensure settings exist at this point + settingsService.createDefaultSettingsIfNotExists(); + Files.deleteIfExists(migratorPath); }