diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/AsyncMigrationStarterService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/AsyncMigrationStarterService.java new file mode 100644 index 000000000..9a63cd1b9 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/AsyncMigrationStarterService.java @@ -0,0 +1,33 @@ +package com.iqser.red.service.peristence.v1.server.migration; + +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import com.iqser.red.service.peristence.v1.server.service.job.AutomaticAnalysisJob; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +@RequiredArgsConstructor +public class AsyncMigrationStarterService { + + private final AutomaticAnalysisJob automaticAnalysisJob; + private final MigrationStarterService migrationStarterService; + + + @Async + public void runForTenant(String tenantId) { + + try { + automaticAnalysisJob.setSchedulingStopped(true); + migrationStarterService.runForTenant(tenantId); + automaticAnalysisJob.setSchedulingStopped(false); + } catch (Exception e) { + automaticAnalysisJob.setSchedulingStopped(false); + throw e; + } + } + +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/TenantManagementService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/TenantManagementService.java index a4244386d..d963c7001 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/TenantManagementService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/TenantManagementService.java @@ -19,8 +19,7 @@ import org.springframework.core.io.ResourceLoader; import org.springframework.jdbc.datasource.SingleConnectionDataSource; import org.springframework.stereotype.Service; -import com.iqser.red.service.peristence.v1.server.migration.MigrationStarterService; -import com.iqser.red.service.peristence.v1.server.service.job.AutomaticAnalysisJob; +import com.iqser.red.service.peristence.v1.server.migration.AsyncMigrationStarterService; import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.multitenancy.entity.TenantEntity; @@ -55,22 +54,19 @@ public class TenantManagementService { private final LiquibaseProperties liquibaseProperties; private final ResourceLoader resourceLoader; private final TenantRepository tenantRepository; - private final AutomaticAnalysisJob automaticAnalysisJob; - private final MigrationStarterService migrationStarterService; + private final AsyncMigrationStarterService asyncMigrationStarterService; public TenantManagementService(EncryptionDecryptionService encryptionService, @Qualifier("tenantLiquibaseProperties") LiquibaseProperties liquibaseProperties, ResourceLoader resourceLoader, - TenantRepository tenantRepository, AutomaticAnalysisJob automaticAnalysisJob, MigrationStarterService migrationStarterService) { + TenantRepository tenantRepository, AsyncMigrationStarterService asyncMigrationStarterService) { this.encryptionService = encryptionService; this.liquibaseProperties = liquibaseProperties; this.resourceLoader = resourceLoader; this.tenantRepository = tenantRepository; - this.automaticAnalysisJob = automaticAnalysisJob; - this.migrationStarterService = migrationStarterService; - + this.asyncMigrationStarterService = asyncMigrationStarterService; } @@ -101,15 +97,7 @@ public class TenantManagementService { .build(); tenantRepository.save(tenantEntity); - try{ - automaticAnalysisJob.setSchedulingStopped(true); - migrationStarterService.runForTenant(tenantRequest.getTenantId()); - automaticAnalysisJob.setSchedulingStopped(false); - } catch (Exception e){ - automaticAnalysisJob.setSchedulingStopped(false); - throw e; - } - + asyncMigrationStarterService.runForTenant(tenantRequest.getTenantId()); } else { throw ConflictException.withObjectName("tenant");