{"record":{"id":"1b884124c451b29b","repo":"quarkusio/quarkus","slug":"global-simple-trigger-misfire-policy-configured-wi","errorCode":null,"errorMessage":"Global simple trigger misfire policy configured with invalid option. Valid options are: ${validOptions}","messagePattern":"Global simple trigger misfire policy configured with invalid option\\. Valid options are: (.+?)","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"extensions/quartz/runtime/src/main/java/io/quarkus/quartz/runtime/QuartzSchedulerImpl.java","lineNumber":162,"sourceCode":"        if (startMode != StartMode.NORMAL) {\n            startHalted = (startMode == StartMode.HALTED);\n            forceStart = startHalted || (startMode == StartMode.FORCED);\n        } else {\n            startHalted = false;\n            forceStart = false;\n        }\n\n        var simpleTriggerConfig = runtimeConfig.simpleTriggerConfig();\n        var cronTriggerConfig = runtimeConfig.cronTriggerConfig();\n        if (!QuartzMisfirePolicy.validCronValues().contains(cronTriggerConfig.misfirePolicyConfig().misfirePolicy())) {\n            throw new IllegalArgumentException(\n                    \"Global cron trigger misfire policy configured with invalid option. Valid options are: \"\n                            + QuartzMisfirePolicy.validCronValues().stream()\n                                    .map(QuartzMisfirePolicy::dashedName)\n                                    .collect(Collectors.joining(\", \")));\n        }\n        if (!QuartzMisfirePolicy.validSimpleValues().contains(simpleTriggerConfig.misfirePolicyConfig().misfirePolicy())) {\n            throw new IllegalArgumentException(\n                    \"Global simple trigger misfire policy configured with invalid option. Valid options are: \"\n                            + QuartzMisfirePolicy.validSimpleValues().stream()\n                                    .map(QuartzMisfirePolicy::dashedName)\n                                    .collect(Collectors.joining(\", \")));\n        }\n\n        JobInstrumenter instrumenter = null;\n        if (schedulerConfig.tracingEnabled() && jobInstrumenter.isResolvable()) {\n            instrumenter = jobInstrumenter.get();\n        }\n\n        if (!schedulerRuntimeConfig.enabled()) {\n            LOGGER.info(\"Quartz scheduler is disabled by config property and will not be started\");\n            this.scheduler = null;\n        } else if (!forceStart && context.getScheduledMethods(Scheduled.QUARTZ).isEmpty()\n                && !context.forceSchedulerStart()) {\n            LOGGER.info(\"No scheduled business methods found - Quartz scheduler will not be started\");\n            this.scheduler = null;","sourceCodeStart":144,"sourceCodeEnd":180,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/quartz/runtime/src/main/java/io/quarkus/quartz/runtime/QuartzSchedulerImpl.java#L144-L180","documentation":"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).","triggerScenarios":"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.","commonSituations":"Copy-pasting cron-trigger policy values into simple-trigger; typos; following examples from a different Quarkus version with a different enum.","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."],"exampleFix":"# before\nquarkus.quartz.simple-trigger.misfire-policy=do-nothing\n\n# after\nquarkus.quartz.simple-trigger.misfire-policy=skip-if-fires","handlingStrategy":"validation","validationCode":"// verify value against the enum at startup/test time\nString policy = ConfigProvider.getConfig()\n        .getValue(\"quarkus.quartz.simple-trigger.misfire-policy\", String.class);\njava.util.Set<String> valid = java.util.Set.of(\"smart-policy\", \"ignore-misfire-policy\",\n        \"fire-now\", \"fire-once-now\", \"skip-if-fires\");\nif (!valid.contains(policy)) {\n    throw new IllegalArgumentException(\"Invalid simple misfire policy: \" + policy + \", valid: \" + valid);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["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."],"tags":["quarkus","quartz","configuration","misfire-policy","validation"],"backgroundTag":"invalid-enum-config-value","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}