From 4afbc9658a6fa5db6fde931311cdc1acd9f1a905 Mon Sep 17 00:00:00 2001 From: Thomas Neidhart Date: Thu, 5 Feb 2026 15:28:11 +0100 Subject: [PATCH 1/2] ensure that the MigrationItemJobs is removed when no migration item is left anymore, correctly output the migraiton items to be processed, delete all existing migration items from the table as migraiton is done --- .../openvsx/migration/HandlerJobRequest.java | 3 ++- .../MigrationItemJobRequestHandler.java | 24 ++++--------------- .../openvsx/migration/MigrationScheduler.java | 12 +++++++++- .../V1_58__Delete_MigrationItems.sql | 1 + 4 files changed, 19 insertions(+), 21 deletions(-) create mode 100644 server/src/main/resources/db/migration/V1_58__Delete_MigrationItems.sql 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_58__Delete_MigrationItems.sql b/server/src/main/resources/db/migration/V1_58__Delete_MigrationItems.sql new file mode 100644 index 000000000..d6c58cc01 --- /dev/null +++ b/server/src/main/resources/db/migration/V1_58__Delete_MigrationItems.sql @@ -0,0 +1 @@ +DELETE FROM migration_item; \ No newline at end of file From 9392bfb29a6a27a9cc04fd4538e4f94b64607862 Mon Sep 17 00:00:00 2001 From: Thomas Neidhart Date: Fri, 6 Feb 2026 22:06:45 +0100 Subject: [PATCH 2/2] update db migration after rebase --- .../resources/db/migration/V1_58__Delete_MigrationItems.sql | 1 - .../resources/db/migration/V1_61__Delete_MigrationItems.sql | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) delete mode 100644 server/src/main/resources/db/migration/V1_58__Delete_MigrationItems.sql create mode 100644 server/src/main/resources/db/migration/V1_61__Delete_MigrationItems.sql diff --git a/server/src/main/resources/db/migration/V1_58__Delete_MigrationItems.sql b/server/src/main/resources/db/migration/V1_58__Delete_MigrationItems.sql deleted file mode 100644 index d6c58cc01..000000000 --- a/server/src/main/resources/db/migration/V1_58__Delete_MigrationItems.sql +++ /dev/null @@ -1 +0,0 @@ -DELETE FROM migration_item; \ No newline at end of file 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;