Class AnnotationDrivenSchedulingConfig

java.lang.Object
ubic.gemma.core.config.AnnotationDrivenSchedulingConfig

@Configuration @Profile({"production","scheduler"}) @EnableScheduling public class AnnotationDrivenSchedulingConfig extends Object
Turns on annotation-driven scheduling (@Scheduled) for real deployments.

This used to live on SchedulerConfig, which is gated to the scheduler profile because it wires Quartz triggers. That coupled two unrelated things: Quartz job wiring, and whether @Scheduled methods run at all. Production nodes run spring.profiles.active=production without scheduler, so every @Scheduled method in the codebase was silently dormant there — including the nightly search reindex, the pipeline reconciler, submitted-task maintenance, the DEA warm-up, and the HomeStats daily refresh. Several of those are written as though they run nightly (the HomeStats cron is set to 4 AM specifically to follow the 3 AM reindex), so the intent was always that they fire.

Scoped to EnvironmentProfiles.PRODUCTION and EnvironmentProfiles.SCHEDULER deliberately. It is NOT active under test — tests must not have background crons firing mid-run — and not under cli, where a process runs one command and exits.

Individual jobs stay independently controllable through their own cron / interval / enabled properties; this only decides whether the scheduling machinery exists at all.

  • Constructor Details

    • AnnotationDrivenSchedulingConfig

      public AnnotationDrivenSchedulingConfig()