Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,15 @@ public class HandlerJobRequest<T extends JobRequestHandler<?>> implements JobReq

private Class<T> handler;

// needed for serialization by jobrunr
public HandlerJobRequest() {}

public HandlerJobRequest(Class<T> handler) {
this.handler = handler;
}

@Override
public Class<? extends JobRequestHandler> getJobRequestHandler() {
public Class<? extends JobRequestHandler<?>> getJobRequestHandler() {
return handler;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,35 +24,20 @@
@Component
public class MigrationItemJobRequestHandler implements JobRequestHandler<HandlerJobRequest<?>> {

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
Expand All @@ -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();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
@Component
public class MigrationScheduler implements JobRequestHandler<HandlerJobRequest<?>> {

private final static String SCHEDULE_MIGRATION_ITEMS_JOB = "schedule-migration-items";

private final OrphanNamespaceMigration orphanNamespaceMigration;
private final JobRequestScheduler scheduler;

Expand All @@ -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);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
-- remove dangling FixMissingFiles migration items
DELETE FROM migration_item;