quarkusio/quarkus · error · IllegalArgumentException

Global cron trigger misfire policy configured with invalid o

Error message

Global cron trigger misfire policy configured with invalid option. Valid options are: ${validOptions}

What it means

At QuartzSchedulerImpl startup the global misfire policy for cron triggers (quarkus.quartz.cron-trigger.misfire-policy) is validated against QuartzMisfirePolicy.validCronValues(). An unknown value throws IllegalArgumentException listing all valid dashed-name options. Not every misfire policy is valid for cron triggers (e.g. skip-if-fires is simple-trigger-only).

Source

Thrown at extensions/quartz/runtime/src/main/java/io/quarkus/quartz/runtime/QuartzSchedulerImpl.java:155

        this.runtimeConfig = quartzSupport.getRuntimeConfig();
        this.schedulerConfig = schedulerConfig;
        this.storeType = quartzSupport.getBuildTimeConfig().storeType();

        StartMode startMode = schedulerRuntimeConfig.startMode();

        boolean forceStart;
        if (startMode != StartMode.NORMAL) {
            startHalted = (startMode == StartMode.HALTED);
            forceStart = startHalted || (startMode == StartMode.FORCED);
        } else {
            startHalted = false;
            forceStart = false;
        }

        var simpleTriggerConfig = runtimeConfig.simpleTriggerConfig();
        var cronTriggerConfig = runtimeConfig.cronTriggerConfig();
        if (!QuartzMisfirePolicy.validCronValues().contains(cronTriggerConfig.misfirePolicyConfig().misfirePolicy())) {
            throw new IllegalArgumentException(
                    "Global cron trigger misfire policy configured with invalid option. Valid options are: "
                            + QuartzMisfirePolicy.validCronValues().stream()
                                    .map(QuartzMisfirePolicy::dashedName)
                                    .collect(Collectors.joining(", ")));
        }
        if (!QuartzMisfirePolicy.validSimpleValues().contains(simpleTriggerConfig.misfirePolicyConfig().misfirePolicy())) {
            throw new IllegalArgumentException(
                    "Global simple trigger misfire policy configured with invalid option. Valid options are: "
                            + QuartzMisfirePolicy.validSimpleValues().stream()
                                    .map(QuartzMisfirePolicy::dashedName)
                                    .collect(Collectors.joining(", ")));
        }

        JobInstrumenter instrumenter = null;
        if (schedulerConfig.tracingEnabled() && jobInstrumenter.isResolvable()) {
            instrumenter = jobInstrumenter.get();
        }

View on GitHub (pinned to e1c734241f)

Solutions

  1. Use one of the listed valid dashed options, e.g. smart-policy, ignore-misfire-policy, fire-now, fire-once-now, do-nothing.
  2. If you intended skip-if-fires, set it under quarkus.quartz.simple-trigger.misfire-policy instead.
  3. Check the Quarkus Quartz guide for the exact allowed values for your version.

Example fix

# before
quarkus.quartz.cron-trigger.misfire-policy=skip-if-fires

# after
quarkus.quartz.cron-trigger.misfire-policy=do-nothing
Defensive patterns

Strategy: validation

Validate before calling

// verify value against the enum at startup/test time
String policy = ConfigProvider.getConfig()
        .getValue("quarkus.quartz.cron-trigger.misfire-policy", String.class);
java.util.Set<String> valid = java.util.Set.of("smart-policy", "ignore-misfire-policy",
        "fire-now", "fire-once-now", "do-nothing");
if (!valid.contains(policy)) {
    throw new IllegalArgumentException("Invalid cron misfire policy: " + policy + ", valid: " + valid);
}

Prevention

When it happens

Trigger: Set quarkus.quartz.cron-trigger.misfire-policy to a value not in the valid cron set — misspelled, wrong casing/dashes, or a policy only valid for simple triggers (e.g. skip-if-fires).

Common situations: Copy-pasting a simple-trigger policy value into the cron-trigger property; typos like 'fire_now' vs 'fire-now'; outdated docs from older Quarkus versions.

Related errors


AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05). Data as JSON: /api/errors/76afe41647a53a68. Report an issue: GitHub.