Pull request #131: RED-2171: Fixed rollback in migration because of exit 0

Merge in RED/persistence-service from RED-2171-fix to master

* commit '6ca2d3ae2697c7bf5f7b8b32da7d7e2616532c21':
  RED-2171: Fixed migration of dossier attributes and redaction logs
  RED-2171: Fixed rollback in migration because of exit 0
This commit is contained in:
Dominique Eiflaender 2021-11-25 14:10:14 +01:00
commit 9c8f0c87b3
2 changed files with 46 additions and 23 deletions

View File

@ -15,10 +15,6 @@ import java.util.Set;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicInteger;
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 org.springframework.transaction.annotation.Transactional;
@ -50,7 +46,6 @@ import com.iqser.red.service.peristence.v1.server.migration.model.NewIdForDossie
import com.iqser.red.service.peristence.v1.server.migration.model.VersionRow;
import com.iqser.red.service.peristence.v1.server.migration.model.VersionType;
import com.iqser.red.service.peristence.v1.server.service.FileManagementStorageService;
import com.iqser.red.service.peristence.v1.server.settings.FileManagementServiceSettings;
import com.iqser.red.service.peristence.v1.server.utils.StorageIdUtils;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.CommentEntity;
@ -162,20 +157,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
@ -198,9 +179,9 @@ public class MigrationService {
dossierTemplates.forEach(dossierTemplate -> {
migrateDossierTemplate(dossierTemplate);
log.info("Migrated dossierTemplates");
dossierAttributesOldIdToNewId.putAll(migrateDossierAttributeConfiguration(dossierTemplate.getDossierTemplateId(), configurationRows));
addValues(dossierAttributesOldIdToNewId,migrateDossierAttributeConfiguration(dossierTemplate.getDossierTemplateId(), configurationRows));
log.info("Migrated dossier attributes config");
fileAttributesOldIdToNewId.putAll(migrateFileAttributeConfiguration(dossierTemplate.getDossierTemplateId(), configurationRows));
addValues(fileAttributesOldIdToNewId, migrateFileAttributeConfiguration(dossierTemplate.getDossierTemplateId(), configurationRows));
log.info("Migrated file attributes config");
migrateLegalBasis(dossierTemplate.getDossierTemplateId(), configurationRows, versions);
log.info("Migrated legal basis");
@ -257,6 +238,13 @@ public class MigrationService {
}
private void addValues(Map<String, List<NewIdForDossierTemplate>> existing, Map<String, List<NewIdForDossierTemplate>> newValues){
newValues.entrySet().forEach(entry -> {
existing.computeIfAbsent(entry.getKey(), x -> new ArrayList<>()).addAll(entry.getValue());
});
}
private void migrateRedactionLogs() {
List<FileEntity> files = fileRepository.findAll();
@ -721,7 +709,7 @@ public class MigrationService {
.hardDeletedTime(oldDossier.getHardDeletedTime())
.dueDate(oldDossier.getDueDate())
.dossierTemplate(dossierTemplateRepository.getOne(oldDossier.getDossierTemplateId()))
// .dossierTemplateId(oldDossier.getDossierTemplateId())
.dossierTemplateId(oldDossier.getDossierTemplateId())
.reportTemplates(reportTemplates)
.build();
@ -868,7 +856,7 @@ public class MigrationService {
.analysisVersion(oldFile.getAnalysisVersion())
.excludedPages(oldFile.getExcludedPages())
.dossier(dossierEntity)
// .dossierId(oldFile.getDossierId())
.dossierId(oldFile.getDossierId())
.build();
List<FileAttributeEntity> convertedFileAttributes = new ArrayList<>();

View File

@ -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));
}
}
}