diff --git a/server/src/main/java/org/eclipse/openvsx/migration/HandlerJobRequest.java b/server/src/main/java/org/eclipse/openvsx/migration/HandlerJobRequest.java index 871704018..c558a17f1 100644 --- a/server/src/main/java/org/eclipse/openvsx/migration/HandlerJobRequest.java +++ b/server/src/main/java/org/eclipse/openvsx/migration/HandlerJobRequest.java @@ -16,6 +16,7 @@ public class HandlerJobRequest> implements JobReq private Class handler; + // needed for serialization by jobrunr public HandlerJobRequest() {} public HandlerJobRequest(Class handler) { @@ -23,7 +24,7 @@ public HandlerJobRequest(Class handler) { } @Override - public Class getJobRequestHandler() { + public Class> getJobRequestHandler() { return handler; } } diff --git a/server/src/main/java/org/eclipse/openvsx/migration/MigrationItemJobRequestHandler.java b/server/src/main/java/org/eclipse/openvsx/migration/MigrationItemJobRequestHandler.java index 2c4d45803..cd7943e13 100644 --- a/server/src/main/java/org/eclipse/openvsx/migration/MigrationItemJobRequestHandler.java +++ b/server/src/main/java/org/eclipse/openvsx/migration/MigrationItemJobRequestHandler.java @@ -24,35 +24,20 @@ @Component public class MigrationItemJobRequestHandler implements JobRequestHandler> { - private static String JOB_NAME; - protected final Logger logger = LoggerFactory.getLogger(MigrationItemJobRequestHandler.class); private final RepositoryService repositories; private final MigrationService migrations; - private final JobRequestScheduler scheduler; + private final MigrationScheduler scheduler; public MigrationItemJobRequestHandler( RepositoryService repositories, MigrationService migrations, - JobRequestScheduler scheduler, - @Value("${ovsx.registry.version:}") String version, - @Value("${ovsx.migrations.once-per-version:false}") boolean runMigrationsOncePerVersion + MigrationScheduler scheduler ) { this.repositories = repositories; this.migrations = migrations; this.scheduler = scheduler; - - var jobIdText = "ScheduleMigrationItems"; - if(runMigrationsOncePerVersion) { - jobIdText = jobIdText + "::" + version; - } - - JOB_NAME = UUID.nameUUIDFromBytes(jobIdText.getBytes(StandardCharsets.UTF_8)).toString(); - } - - public static String getJobName() { - return JOB_NAME; } @Override @@ -62,9 +47,10 @@ public void run(HandlerJobRequest jobRequest) throws Exception { migrations.enqueueMigration(item); } - logger.info("Scheduled migration items: {}", items.getSize()); + logger.info("Scheduled migration items: {}", items.getNumberOfElements()); if(!items.hasNext()) { - scheduler.deleteRecurringJob(getJobName()); + logger.info("Migration completed, deleting recurring job"); + scheduler.deleteScheduleMigrationItemsJob(); } } } diff --git a/server/src/main/java/org/eclipse/openvsx/migration/MigrationScheduler.java b/server/src/main/java/org/eclipse/openvsx/migration/MigrationScheduler.java index 289970ef2..9a2872d8b 100644 --- a/server/src/main/java/org/eclipse/openvsx/migration/MigrationScheduler.java +++ b/server/src/main/java/org/eclipse/openvsx/migration/MigrationScheduler.java @@ -19,6 +19,8 @@ @Component public class MigrationScheduler implements JobRequestHandler> { + private final static String SCHEDULE_MIGRATION_ITEMS_JOB = "schedule-migration-items"; + private final OrphanNamespaceMigration orphanNamespaceMigration; private final JobRequestScheduler scheduler; @@ -41,6 +43,14 @@ public void run(HandlerJobRequest jobRequest) throws Exception { scheduler.enqueue(new HandlerJobRequest<>(GenerateKeyPairJobRequestHandler.class)); } - scheduler.scheduleRecurrently(MigrationItemJobRequestHandler.getJobName(), Cron.every15minutes(), new HandlerJobRequest<>(MigrationItemJobRequestHandler.class)); + scheduler.scheduleRecurrently( + SCHEDULE_MIGRATION_ITEMS_JOB, + Cron.every15minutes(), + new HandlerJobRequest<>(MigrationItemJobRequestHandler.class) + ); + } + + public void deleteScheduleMigrationItemsJob() { + scheduler.deleteRecurringJob(SCHEDULE_MIGRATION_ITEMS_JOB); } } diff --git a/server/src/main/resources/db/migration/V1_61__Delete_MigrationItems.sql b/server/src/main/resources/db/migration/V1_61__Delete_MigrationItems.sql new file mode 100644 index 000000000..225aa0afc --- /dev/null +++ b/server/src/main/resources/db/migration/V1_61__Delete_MigrationItems.sql @@ -0,0 +1,2 @@ +-- remove dangling FixMissingFiles migration items +DELETE FROM migration_item;