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
- Use a listed valid option, e.g. smart-policy, ignore-misfire-policy, fire-now, fire-once-now, skip-if-fires.
- If you meant do-nothing (cron-only), choose all-misfire-policy appropriate for simple triggers instead.
- 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
- Use the dashed names exactly as listed in the error message.
- Remember simple triggers do not accept do-nothing.
- Copy policies per trigger type; don't share one value between cron/simple sections.
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
- Global cron trigger misfire policy configured with invalid o
- Cron job {identity} configured with invalid misfire policy {
- Simple job {identity} configured with invalid misfire policy
- Parameter 'mode' was set to '<mode>' while expected one of '
- Maven version can't be empty.
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/1b884124c451b29b.
Report an issue: GitHub.