From b6ca3e1e638b04bb4c458898e976e9c7ee805605 Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Tue, 19 Apr 2022 15:29:34 +0300 Subject: [PATCH 1/3] quartz jobs RED-3848 --- .dev/docker-compose.yaml | 9 +- .../persistence-service-server-v1/pom.xml | 11 +- .../server/jobs/CreateJobsConfiguration.java | 70 +++ .../AutomaticAnalysisJob.java} | 20 +- .../DeletedFilesCleanupJob.java} | 13 +- .../DownloadCleanupJob.java} | 14 +- .../db/changelog/23-quartz.changelog.yaml | 536 ++++++++++++++++++ .../db/changelog/db.changelog-master.yaml | 2 + 8 files changed, 641 insertions(+), 34 deletions(-) create mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/jobs/CreateJobsConfiguration.java rename persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/{scheduler/AutomaticAnalysisScheduler.java => job/AutomaticAnalysisJob.java} (83%) rename persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/{scheduler/DeletedFilesCleanupService.java => job/DeletedFilesCleanupJob.java} (85%) rename persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/{download/DownloadCleanupService.java => job/DownloadCleanupJob.java} (90%) create mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/23-quartz.changelog.yaml diff --git a/.dev/docker-compose.yaml b/.dev/docker-compose.yaml index 00f6876c9..480b416cd 100644 --- a/.dev/docker-compose.yaml +++ b/.dev/docker-compose.yaml @@ -11,13 +11,12 @@ services: POSTGRES_USER: redaction POSTGRES_PASSWORD: redaction POSTGRES_DB: redaction - - rabbitmq: - image: 'bitnami/rabbitmq:latest' - mem_limit: 1000m + image: 'rabbitmq:3.9-alpine' + mem_limit: 500m environment: - - RABBITMQ_PASSWORD=rabbitmq + - RABBITMQ_DEFAULT_USER=user + - RABBITMQ_DEFAULT_PASS=rabbitmq ports: - 5672:5672 - 15672:15672 diff --git a/persistence-service-v1/persistence-service-server-v1/pom.xml b/persistence-service-v1/persistence-service-server-v1/pom.xml index ec96d4983..a9374549d 100644 --- a/persistence-service-v1/persistence-service-server-v1/pom.xml +++ b/persistence-service-v1/persistence-service-server-v1/pom.xml @@ -139,24 +139,27 @@ spring-cloud-starter-openfeign + + org.springframework.boot + spring-boot-starter-quartz + + org.springframework.boot spring-boot-starter-amqp - 2.3.1.RELEASE org.springframework.amqp spring-rabbit-test - 2.3.1 test org.testcontainers postgresql - 1.16.3 + 1.17.1 test @@ -172,7 +175,7 @@ org.liquibase liquibase-core - 4.3.1 + 4.8.0 com.yannbriancon diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/jobs/CreateJobsConfiguration.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/jobs/CreateJobsConfiguration.java new file mode 100644 index 000000000..0c2f42fec --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/jobs/CreateJobsConfiguration.java @@ -0,0 +1,70 @@ +package com.iqser.red.service.peristence.v1.server.jobs; + +import com.iqser.red.service.peristence.v1.server.service.job.AutomaticAnalysisJob; +import com.iqser.red.service.peristence.v1.server.service.job.DeletedFilesCleanupJob; +import com.iqser.red.service.peristence.v1.server.service.job.DownloadCleanupJob; +import org.quartz.*; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.text.ParseException; + +@Configuration +public class CreateJobsConfiguration { + + @Bean + public JobDetail automaticAnalysisJobDetail() { + return JobBuilder.newJob().ofType(AutomaticAnalysisJob.class) + .storeDurably() + .withIdentity("AutomaticAnalysisJob") + .withDescription("Automatically queues files for analysis") + .build(); + } + + @Bean + public Trigger automaticAnalysisJobTrigger() throws ParseException { + return TriggerBuilder.newTrigger().forJob(automaticAnalysisJobDetail()) + .withIdentity("AutomaticAnalysisJobTrigger") + .withDescription("Triggers AutomaticAnalysisJob every 10 seconds") + .withSchedule(CronScheduleBuilder.cronSchedule(new CronExpression("*/10 * * * * ?"))) + .build(); + } + + @Bean + public JobDetail deletedFilesCleanupJobDetail() { + return JobBuilder.newJob().ofType(DeletedFilesCleanupJob.class) + .storeDurably() + .withIdentity("DeletedFilesCleanupJob") + .withDescription("Hard delete dossiers / files after certain time") + .build(); + } + + @Bean + public Trigger deletedFilesCleanupJobTrigger() throws ParseException { + return TriggerBuilder.newTrigger().forJob(deletedFilesCleanupJobDetail()) + .withIdentity("DeletedFilesCleanupJobTrigger") + .withDescription("Triggers DeletedFilesCleanupJob every 30 minutes") + .withSchedule(CronScheduleBuilder.cronSchedule(new CronExpression("0 */30 * * * ?"))) + .build(); + } + + + @Bean + public JobDetail downloadCleanupJobDetail() { + return JobBuilder.newJob().ofType(DownloadCleanupJob.class) + .storeDurably() + .withIdentity("DownloadCleanupJob") + .withDescription("Hard delete dossiers / files after certain time") + .build(); + } + + @Bean + public Trigger downloadCleanupJobTrigger() throws ParseException { + return TriggerBuilder.newTrigger().forJob(downloadCleanupJobDetail()) + .withIdentity("DownloadCleanupJobTrigger") + .withDescription("Triggers DownloadCleanupJob every 30 minutes") + .withSchedule(CronScheduleBuilder.cronSchedule(new CronExpression("0 */30 * * * ?"))) + .build(); + } + +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/scheduler/AutomaticAnalysisScheduler.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/job/AutomaticAnalysisJob.java similarity index 83% rename from persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/scheduler/AutomaticAnalysisScheduler.java rename to persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/job/AutomaticAnalysisJob.java index 364e01504..21ffc26ca 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/scheduler/AutomaticAnalysisScheduler.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/job/AutomaticAnalysisJob.java @@ -1,30 +1,25 @@ -package com.iqser.red.service.peristence.v1.server.service.scheduler; +package com.iqser.red.service.peristence.v1.server.service.job; import com.iqser.red.service.peristence.v1.server.configuration.MessagingConfiguration; import com.iqser.red.service.peristence.v1.server.service.FileStatusService; -import com.iqser.red.service.peristence.v1.server.service.ReanalysisRequiredStatusService; import com.iqser.red.service.peristence.v1.server.settings.FileManagementServiceSettings; -import com.iqser.red.service.peristence.v1.server.utils.FileModelMapper; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileModel; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.quartz.Job; +import org.quartz.JobExecutionContext; import org.springframework.amqp.core.AmqpAdmin; import org.springframework.beans.factory.annotation.Value; -import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.PostConstruct; -import java.util.ArrayList; import java.util.List; -import java.util.stream.Collectors; - -import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; @Slf4j @Service @RequiredArgsConstructor -public class AutomaticAnalysisScheduler { +public class AutomaticAnalysisJob implements Job { @Value("${persistence-service.automaticAnalysis.pageFactor:500}") private int pageFactor; @@ -35,16 +30,15 @@ public class AutomaticAnalysisScheduler { @PostConstruct protected void postConstruct() { - log.info("Automatic Analysis pageFactor: {}", pageFactor); } + @Override @Transactional - @Scheduled(fixedDelay = 10000, initialDelay = 10000) - public void checkFilesThatRequireReanalysisAndQueueIfPossible() { + public void execute(JobExecutionContext jobExecutionContext) { - if(fileManagementServiceSettings.isMigrateOnly()){ + if (fileManagementServiceSettings.isMigrateOnly()) { log.info("Skipping scheduling during migration"); return; } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/scheduler/DeletedFilesCleanupService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/job/DeletedFilesCleanupJob.java similarity index 85% rename from persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/scheduler/DeletedFilesCleanupService.java rename to persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/job/DeletedFilesCleanupJob.java index 4f3937bb6..269340a94 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/scheduler/DeletedFilesCleanupService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/job/DeletedFilesCleanupJob.java @@ -1,9 +1,10 @@ -package com.iqser.red.service.peristence.v1.server.service.scheduler; +package com.iqser.red.service.peristence.v1.server.service.job; import java.time.OffsetDateTime; import java.util.List; -import org.springframework.scheduling.annotation.Scheduled; +import org.quartz.Job; +import org.quartz.JobExecutionContext; import org.springframework.stereotype.Service; import com.iqser.red.service.peristence.v1.server.service.DossierService; @@ -11,7 +12,6 @@ import com.iqser.red.service.peristence.v1.server.service.FileService; import com.iqser.red.service.peristence.v1.server.service.FileStatusService; import com.iqser.red.service.peristence.v1.server.settings.FileManagementServiceSettings; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity; -import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -19,7 +19,7 @@ import lombok.extern.slf4j.Slf4j; @Slf4j @RequiredArgsConstructor @Service -public class DeletedFilesCleanupService { +public class DeletedFilesCleanupJob implements Job { private final DossierService dossierService; private final FileStatusService fileStatusService; @@ -27,8 +27,8 @@ public class DeletedFilesCleanupService { private final FileManagementServiceSettings settings; - @Scheduled(fixedDelay = 300000, initialDelay = 300000) - public void timedDeletion() { + @Override + public void execute(JobExecutionContext jobExecutionContext) { var now = OffsetDateTime.now(); List dossiers = dossierService.getAllDossiers(); @@ -53,4 +53,5 @@ public class DeletedFilesCleanupService { } } + } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/download/DownloadCleanupService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/job/DownloadCleanupJob.java similarity index 90% rename from persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/download/DownloadCleanupService.java rename to persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/job/DownloadCleanupJob.java index 07f95d6f8..db6eaebed 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/download/DownloadCleanupService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/job/DownloadCleanupJob.java @@ -1,4 +1,4 @@ -package com.iqser.red.service.peristence.v1.server.service.download; +package com.iqser.red.service.peristence.v1.server.service.job; import com.iqser.red.service.peristence.v1.server.service.DossierService; import com.iqser.red.service.peristence.v1.server.settings.FileManagementServiceSettings; @@ -7,7 +7,8 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import com.iqser.red.storage.commons.service.StorageService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.scheduling.annotation.Scheduled; +import org.quartz.Job; +import org.quartz.JobExecutionContext; import org.springframework.stereotype.Service; import java.time.OffsetDateTime; @@ -17,15 +18,15 @@ import java.util.List; @Slf4j @RequiredArgsConstructor @Service -public class DownloadCleanupService { +public class DownloadCleanupJob implements Job { private final DownloadStatusPersistenceService downloadStatusPersistenceService; private final StorageService storageService; private final FileManagementServiceSettings settings; private final DossierService dossierService; - @Scheduled(fixedDelay = 300000, initialDelay = 300000) - public void processDocuments() { + @Override + public void execute(JobExecutionContext jobExecutionContext) { var now = OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS); log.info("Checking for downloads to delete at {}", now); @@ -56,7 +57,7 @@ public class DownloadCleanupService { } - public void deleteDownload(DownloadStatusEntity downloadStatus) { + private void deleteDownload(DownloadStatusEntity downloadStatus) { log.info("Deleting download status {}", downloadStatus); try { @@ -70,4 +71,5 @@ public class DownloadCleanupService { log.warn("DownloadStatus could not be deleted: {}" + e.getMessage()); } } + } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/23-quartz.changelog.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/23-quartz.changelog.yaml new file mode 100644 index 000000000..cd8fad44f --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/23-quartz.changelog.yaml @@ -0,0 +1,536 @@ +databaseChangeLog: + - changeSet: + id: 1646818341589-1 + author: timobejan (generated) + changes: + - createTable: + columns: + - column: + constraints: + nullable: false + primaryKey: true + name: SCHED_NAME + type: VARCHAR(120) + - column: + constraints: + nullable: false + primaryKey: true + name: TRIGGER_NAME + type: VARCHAR(200) + - column: + constraints: + nullable: false + primaryKey: true + name: TRIGGER_GROUP + type: VARCHAR(200) + - column: + name: BLOB_DATA + type: BLOB + tableName: QRTZ_BLOB_TRIGGERS + - changeSet: + id: 1646818341589-2 + author: timobejan (generated) + changes: + - createTable: + columns: + - column: + constraints: + nullable: false + primaryKey: true + name: SCHED_NAME + type: VARCHAR(120) + - column: + constraints: + nullable: false + primaryKey: true + name: CALENDAR_NAME + type: VARCHAR(200) + - column: + constraints: + nullable: false + name: CALENDAR + type: BLOB + tableName: QRTZ_CALENDARS + - changeSet: + id: 1646818341589-3 + author: timobejan (generated) + changes: + - createTable: + columns: + - column: + constraints: + nullable: false + primaryKey: true + name: SCHED_NAME + type: VARCHAR(120) + - column: + constraints: + nullable: false + primaryKey: true + name: TRIGGER_NAME + type: VARCHAR(200) + - column: + constraints: + nullable: false + primaryKey: true + name: TRIGGER_GROUP + type: VARCHAR(200) + - column: + constraints: + nullable: false + name: CRON_EXPRESSION + type: VARCHAR(200) + - column: + name: TIME_ZONE_ID + type: VARCHAR(80) + tableName: QRTZ_CRON_TRIGGERS + - changeSet: + id: 1646818341589-4 + author: timobejan (generated) + changes: + - createTable: + columns: + - column: + constraints: + nullable: false + primaryKey: true + name: SCHED_NAME + type: VARCHAR(120) + - column: + constraints: + nullable: false + primaryKey: true + name: ENTRY_ID + type: VARCHAR(95) + - column: + constraints: + nullable: false + name: TRIGGER_NAME + type: VARCHAR(200) + - column: + constraints: + nullable: false + name: TRIGGER_GROUP + type: VARCHAR(200) + - column: + constraints: + nullable: false + name: INSTANCE_NAME + type: VARCHAR(200) + - column: + constraints: + nullable: false + name: FIRED_TIME + type: BIGINT + - column: + constraints: + nullable: false + name: SCHED_TIME + type: BIGINT + - column: + constraints: + nullable: false + name: PRIORITY + type: INT + - column: + constraints: + nullable: false + name: STATE + type: VARCHAR(16) + - column: + name: JOB_NAME + type: VARCHAR(200) + - column: + name: JOB_GROUP + type: VARCHAR(200) + - column: + name: IS_NONCONCURRENT + type: VARCHAR(1) + - column: + name: REQUESTS_RECOVERY + type: VARCHAR(1) + tableName: QRTZ_FIRED_TRIGGERS + - changeSet: + id: 1646818341589-5 + author: timobejan (generated) + changes: + - createTable: + columns: + - column: + constraints: + nullable: false + primaryKey: true + name: SCHED_NAME + type: VARCHAR(120) + - column: + constraints: + nullable: false + primaryKey: true + name: JOB_NAME + type: VARCHAR(200) + - column: + constraints: + nullable: false + primaryKey: true + name: JOB_GROUP + type: VARCHAR(200) + - column: + name: DESCRIPTION + type: VARCHAR(250) + - column: + constraints: + nullable: false + name: JOB_CLASS_NAME + type: VARCHAR(250) + - column: + constraints: + nullable: false + name: IS_DURABLE + type: VARCHAR(1) + - column: + constraints: + nullable: false + name: IS_NONCONCURRENT + type: VARCHAR(1) + - column: + constraints: + nullable: false + name: IS_UPDATE_DATA + type: VARCHAR(1) + - column: + constraints: + nullable: false + name: REQUESTS_RECOVERY + type: VARCHAR(1) + - column: + name: JOB_DATA + type: BLOB + tableName: QRTZ_JOB_DETAILS + - changeSet: + id: 1646818341589-6 + author: timobejan (generated) + changes: + - createTable: + columns: + - column: + constraints: + nullable: false + primaryKey: true + name: SCHED_NAME + type: VARCHAR(120) + - column: + constraints: + nullable: false + primaryKey: true + name: LOCK_NAME + type: VARCHAR(40) + tableName: QRTZ_LOCKS + - changeSet: + id: 1646818341589-7 + author: timobejan (generated) + changes: + - createTable: + columns: + - column: + constraints: + nullable: false + primaryKey: true + name: SCHED_NAME + type: VARCHAR(120) + - column: + constraints: + nullable: false + primaryKey: true + name: TRIGGER_GROUP + type: VARCHAR(200) + tableName: QRTZ_PAUSED_TRIGGER_GRPS + - changeSet: + id: 1646818341589-8 + author: timobejan (generated) + changes: + - createTable: + columns: + - column: + constraints: + nullable: false + primaryKey: true + name: SCHED_NAME + type: VARCHAR(120) + - column: + constraints: + nullable: false + primaryKey: true + name: INSTANCE_NAME + type: VARCHAR(200) + - column: + constraints: + nullable: false + name: LAST_CHECKIN_TIME + type: BIGINT + - column: + constraints: + nullable: false + name: CHECKIN_INTERVAL + type: BIGINT + tableName: QRTZ_SCHEDULER_STATE + - changeSet: + id: 1646818341589-9 + author: timobejan (generated) + changes: + - createTable: + columns: + - column: + constraints: + nullable: false + primaryKey: true + name: SCHED_NAME + type: VARCHAR(120) + - column: + constraints: + nullable: false + primaryKey: true + name: TRIGGER_NAME + type: VARCHAR(200) + - column: + constraints: + nullable: false + primaryKey: true + name: TRIGGER_GROUP + type: VARCHAR(200) + - column: + constraints: + nullable: false + name: REPEAT_COUNT + type: BIGINT + - column: + constraints: + nullable: false + name: REPEAT_INTERVAL + type: BIGINT + - column: + constraints: + nullable: false + name: TIMES_TRIGGERED + type: BIGINT + tableName: QRTZ_SIMPLE_TRIGGERS + - changeSet: + id: 1646818341589-10 + author: timobejan (generated) + changes: + - createTable: + columns: + - column: + constraints: + nullable: false + primaryKey: true + name: SCHED_NAME + type: VARCHAR(120) + - column: + constraints: + nullable: false + primaryKey: true + name: TRIGGER_NAME + type: VARCHAR(200) + - column: + constraints: + nullable: false + primaryKey: true + name: TRIGGER_GROUP + type: VARCHAR(200) + - column: + name: STR_PROP_1 + type: VARCHAR(512) + - column: + name: STR_PROP_2 + type: VARCHAR(512) + - column: + name: STR_PROP_3 + type: VARCHAR(512) + - column: + name: INT_PROP_1 + type: INT + - column: + name: INT_PROP_2 + type: INT + - column: + name: LONG_PROP_1 + type: BIGINT + - column: + name: LONG_PROP_2 + type: BIGINT + - column: + name: DEC_PROP_1 + type: DECIMAL(13, 4) + - column: + name: DEC_PROP_2 + type: DECIMAL(13, 4) + - column: + name: BOOL_PROP_1 + type: VARCHAR(1) + - column: + name: BOOL_PROP_2 + type: VARCHAR(1) + tableName: QRTZ_SIMPROP_TRIGGERS + - changeSet: + id: 1646818341589-11 + author: timobejan (generated) + changes: + - createTable: + columns: + - column: + constraints: + nullable: false + primaryKey: true + name: SCHED_NAME + type: VARCHAR(120) + - column: + constraints: + nullable: false + primaryKey: true + name: TRIGGER_NAME + type: VARCHAR(200) + - column: + constraints: + nullable: false + primaryKey: true + name: TRIGGER_GROUP + type: VARCHAR(200) + - column: + constraints: + nullable: false + name: JOB_NAME + type: VARCHAR(200) + - column: + constraints: + nullable: false + name: JOB_GROUP + type: VARCHAR(200) + - column: + name: DESCRIPTION + type: VARCHAR(250) + - column: + name: NEXT_FIRE_TIME + type: BIGINT + - column: + name: PREV_FIRE_TIME + type: BIGINT + - column: + name: PRIORITY + type: INT + - column: + constraints: + nullable: false + name: TRIGGER_STATE + type: VARCHAR(16) + - column: + constraints: + nullable: false + name: TRIGGER_TYPE + type: VARCHAR(8) + - column: + constraints: + nullable: false + name: START_TIME + type: BIGINT + - column: + name: END_TIME + type: BIGINT + - column: + name: CALENDAR_NAME + type: VARCHAR(200) + - column: + name: MISFIRE_INSTR + type: SMALLINT + - column: + name: JOB_DATA + type: BLOB + tableName: QRTZ_TRIGGERS + - changeSet: + id: 1646818341589-95 + author: timobejan (generated) + changes: + - createIndex: + columns: + - column: + name: SCHED_NAME + - column: + name: JOB_NAME + - column: + name: JOB_GROUP + indexName: SCHED_NAME + tableName: QRTZ_TRIGGERS + - changeSet: + id: 1646818341589-218 + author: timobejan (generated) + changes: + - addForeignKeyConstraint: + baseColumnNames: SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP + baseTableName: QRTZ_BLOB_TRIGGERS + constraintName: QRTZ_BLOB_TRIGGERS_ibfk_1 + deferrable: false + initiallyDeferred: false + onDelete: RESTRICT + onUpdate: RESTRICT + referencedColumnNames: SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP + referencedTableName: QRTZ_TRIGGERS + validate: true + - changeSet: + id: 1646818341589-219 + author: timobejan (generated) + changes: + - addForeignKeyConstraint: + baseColumnNames: SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP + baseTableName: QRTZ_CRON_TRIGGERS + constraintName: QRTZ_CRON_TRIGGERS_ibfk_1 + deferrable: false + initiallyDeferred: false + onDelete: RESTRICT + onUpdate: RESTRICT + referencedColumnNames: SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP + referencedTableName: QRTZ_TRIGGERS + validate: true + - changeSet: + id: 1646818341589-220 + author: timobejan (generated) + changes: + - addForeignKeyConstraint: + baseColumnNames: SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP + baseTableName: QRTZ_SIMPLE_TRIGGERS + constraintName: QRTZ_SIMPLE_TRIGGERS_ibfk_1 + deferrable: false + initiallyDeferred: false + onDelete: RESTRICT + onUpdate: RESTRICT + referencedColumnNames: SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP + referencedTableName: QRTZ_TRIGGERS + validate: true + - changeSet: + id: 1646818341589-221 + author: timobejan (generated) + changes: + - addForeignKeyConstraint: + baseColumnNames: SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP + baseTableName: QRTZ_SIMPROP_TRIGGERS + constraintName: QRTZ_SIMPROP_TRIGGERS_ibfk_1 + deferrable: false + initiallyDeferred: false + onDelete: RESTRICT + onUpdate: RESTRICT + referencedColumnNames: SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP + referencedTableName: QRTZ_TRIGGERS + validate: true + - changeSet: + id: 1646818341589-222 + author: timobejan (generated) + changes: + - addForeignKeyConstraint: + baseColumnNames: SCHED_NAME,JOB_NAME,JOB_GROUP + baseTableName: QRTZ_TRIGGERS + constraintName: QRTZ_TRIGGERS_ibfk_1 + deferrable: false + initiallyDeferred: false + onDelete: RESTRICT + onUpdate: RESTRICT + referencedColumnNames: SCHED_NAME,JOB_NAME,JOB_GROUP + referencedTableName: QRTZ_JOB_DETAILS + validate: true diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml index 83189cb94..16685cf18 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml @@ -53,3 +53,5 @@ databaseChangeLog: file: db/changelog/sql/22-update-file-dossier-attributes.sql - include: file: db/changelog/22-add-soft-delete-time-to-entity.changelog.yaml + - include: + file: db/changelog/23-quartz.changelog.yaml From 7043f6e152f369c548f1d6901413ea9b18ddceb2 Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Tue, 19 Apr 2022 15:55:21 +0300 Subject: [PATCH 2/3] RED-3800 test fix --- persistence-service-v1/persistence-service-server-v1/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/persistence-service-v1/persistence-service-server-v1/pom.xml b/persistence-service-v1/persistence-service-server-v1/pom.xml index a9374549d..d60de784b 100644 --- a/persistence-service-v1/persistence-service-server-v1/pom.xml +++ b/persistence-service-v1/persistence-service-server-v1/pom.xml @@ -175,7 +175,7 @@ org.liquibase liquibase-core - 4.8.0 + 4.9.1 com.yannbriancon From b47dabbc8f9545658e455bd806c726c1b6970199 Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Tue, 19 Apr 2022 16:07:53 +0300 Subject: [PATCH 3/3] RED-3800 liquibase revert --- persistence-service-v1/persistence-service-server-v1/pom.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/persistence-service-v1/persistence-service-server-v1/pom.xml b/persistence-service-v1/persistence-service-server-v1/pom.xml index d60de784b..4f09bd405 100644 --- a/persistence-service-v1/persistence-service-server-v1/pom.xml +++ b/persistence-service-v1/persistence-service-server-v1/pom.xml @@ -175,7 +175,7 @@ org.liquibase liquibase-core - 4.9.1 + 4.3.1 com.yannbriancon @@ -222,4 +222,5 @@ +