From 2a1a65b90318fb16c5116b818f1df2c153731dda Mon Sep 17 00:00:00 2001 From: deiflaender Date: Thu, 25 Nov 2021 10:30:36 +0100 Subject: [PATCH] RED-2171: Fixed rollback in migration because of exit 0 --- .../v1/server/migration/MigrationService.java | 14 -------- .../migration/MigrationStarterService.java | 35 +++++++++++++++++++ 2 files changed, 35 insertions(+), 14 deletions(-) create mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/MigrationStarterService.java diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/MigrationService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/MigrationService.java index 4325c2d51..7bcc65b52 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/MigrationService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/MigrationService.java @@ -162,20 +162,6 @@ public class MigrationService { private final StorageService storageService; - private final FileManagementServiceSettings settings; - private final ApplicationContext ctx; - - - @Transactional - @EventListener(ApplicationReadyEvent.class) - public void runMigration() { - - if (settings.isMigrateOnly()) { - migrate(); - System.exit(SpringApplication.exit(ctx, () -> 0)); - } - } - @SneakyThrows @Transactional diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/MigrationStarterService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/MigrationStarterService.java new file mode 100644 index 000000000..5348ebc52 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/MigrationStarterService.java @@ -0,0 +1,35 @@ +package com.iqser.red.service.peristence.v1.server.migration; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.ApplicationContext; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Service; + +import com.iqser.red.service.peristence.v1.server.settings.FileManagementServiceSettings; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +@RequiredArgsConstructor +public class MigrationStarterService { + + // This is a seperate class because exit 0 causes rollback if the method is @Transactional. + + private final MigrationService migrationService; + private final FileManagementServiceSettings settings; + private final ApplicationContext ctx; + + + @EventListener(ApplicationReadyEvent.class) + public void runMigration() { + + if (settings.isMigrateOnly()) { + migrationService.migrate(); + System.exit(SpringApplication.exit(ctx, () -> 0)); + } + } + +}