{"record":{"id":"76afe41647a53a68","repo":"quarkusio/quarkus","slug":"global-cron-trigger-misfire-policy-configured-with","errorCode":null,"errorMessage":"Global cron trigger misfire policy configured with invalid option. Valid options are: ${validOptions}","messagePattern":"Global cron 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":155,"sourceCode":"        this.runtimeConfig = quartzSupport.getRuntimeConfig();\n        this.schedulerConfig = schedulerConfig;\n        this.storeType = quartzSupport.getBuildTimeConfig().storeType();\n\n        StartMode startMode = schedulerRuntimeConfig.startMode();\n\n        boolean forceStart;\n        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","sourceCodeStart":137,"sourceCodeEnd":173,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/quartz/runtime/src/main/java/io/quarkus/quartz/runtime/QuartzSchedulerImpl.java#L137-L173","documentation":"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).","triggerScenarios":"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).","commonSituations":"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.","solutions":["Use one of the listed valid dashed options, e.g. smart-policy, ignore-misfire-policy, fire-now, fire-once-now, do-nothing.","If you intended skip-if-fires, set it under quarkus.quartz.simple-trigger.misfire-policy instead.","Check the Quarkus Quartz guide for the exact allowed values for your version."],"exampleFix":"# before\nquarkus.quartz.cron-trigger.misfire-policy=skip-if-fires\n\n# after\nquarkus.quartz.cron-trigger.misfire-policy=do-nothing","handlingStrategy":"validation","validationCode":"// verify value against the enum at startup/test time\nString policy = ConfigProvider.getConfig()\n        .getValue(\"quarkus.quartz.cron-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\", \"do-nothing\");\nif (!valid.contains(policy)) {\n    throw new IllegalArgumentException(\"Invalid cron misfire policy: \" + policy + \", valid: \" + valid);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use the dashed names exactly as listed in the error message.","Remember cron triggers do not accept skip-if-fires.","Pin config values in a shared config test across services."],"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"}