quarkusio/quarkus · error · IllegalArgumentException

Global simple trigger misfire policy configured with invalid

Error message

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

What it means

The symmetric validation for simple triggers: quarkus.quartz.simple-trigger.misfire-policy is checked against QuartzMisfirePolicy.validSimpleValues() at scheduler startup, and an unknown value throws IllegalArgumentException listing the valid dashed options. Simple triggers accept a different policy set than cron triggers (e.g. skip-if-fires is simple-only).

Source

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

        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();
        }

        if (!schedulerRuntimeConfig.enabled()) {
            LOGGER.info("Quartz scheduler is disabled by config property and will not be started");
            this.scheduler = null;
        } else if (!forceStart && context.getScheduledMethods(Scheduled.QUARTZ).isEmpty()
                && !context.forceSchedulerStart()) {
            LOGGER.info("No scheduled business methods found - Quartz scheduler will not be started");
            this.scheduler = null;

View on GitHub (pinned to e1c734241f)

Solutions

  1. Use a listed valid option, e.g. smart-policy, ignore-misfire-policy, fire-now, fire-once-now, skip-if-fires.
  2. If you meant do-nothing (cron-only), choose all-misfire-policy appropriate for simple triggers instead.
  3. Confirm exact values in the Quarkus Quartz configuration reference.

Example fix

# before
quarkus.quartz.simple-trigger.misfire-policy=do-nothing

# after
quarkus.quartz.simple-trigger.misfire-policy=skip-if-fires
Defensive patterns

Strategy: validation

Validate before calling

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

Prevention

When it happens

Trigger: Set quarkus.quartz.simple-trigger.misfire-policy to a value not in the valid simple set — misspelling, wrong dashes/casing, or a cron-only policy like do-nothing.

Common situations: Copy-pasting cron-trigger policy values into simple-trigger; typos; following examples from a different Quarkus version with a different enum.

Related errors


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