{"record":{"id":"051941fdeca96fef","repo":"quarkusio/quarkus","slug":"simple-job-identity-configured-with-invalid-misf","errorCode":null,"errorMessage":"Simple job {identity} configured with invalid misfire policy {policy}\nValid options are: {validSimpleValues}","messagePattern":"Simple job (.+?) configured with invalid misfire policy (.+?)\nValid options are: (.+?)","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"extensions/quartz/runtime/src/main/java/io/quarkus/quartz/runtime/QuartzSchedulerImpl.java","lineNumber":786,"sourceCode":"                    simpleScheduleBuilder.withMisfireHandlingInstructionIgnoreMisfires();\n                    break;\n                case FIRE_NOW:\n                    simpleScheduleBuilder.withMisfireHandlingInstructionFireNow();\n                    break;\n                case SIMPLE_TRIGGER_RESCHEDULE_NOW_WITH_EXISTING_REPEAT_COUNT:\n                    simpleScheduleBuilder.withMisfireHandlingInstructionNowWithExistingCount();\n                    break;\n                case SIMPLE_TRIGGER_RESCHEDULE_NOW_WITH_REMAINING_REPEAT_COUNT:\n                    simpleScheduleBuilder.withMisfireHandlingInstructionNowWithRemainingCount();\n                    break;\n                case SIMPLE_TRIGGER_RESCHEDULE_NEXT_WITH_EXISTING_COUNT:\n                    simpleScheduleBuilder.withMisfireHandlingInstructionNextWithExistingCount();\n                    break;\n                case SIMPLE_TRIGGER_RESCHEDULE_NEXT_WITH_REMAINING_COUNT:\n                    simpleScheduleBuilder.withMisfireHandlingInstructionNextWithRemainingCount();\n                    break;\n                case CRON_TRIGGER_DO_NOTHING:\n                    throw new IllegalArgumentException(\"Simple job \" + identity\n                            + \" configured with invalid misfire policy \"\n                            + perJobConfig.misfirePolicy().dashedName() +\n                            \"\\nValid options are: \"\n                            + QuartzMisfirePolicy.validSimpleValues().stream()\n                                    .map(QuartzMisfirePolicy::dashedName)\n                                    .collect(Collectors.joining(\", \")));\n            }\n            scheduleBuilder = simpleScheduleBuilder;\n        } else {\n            throw new IllegalArgumentException(\"Invalid schedule configuration: \" + scheduled);\n        }\n\n        TriggerBuilder<?> triggerBuilder = TriggerBuilder.newTrigger()\n                .withIdentity(identity, Scheduler.class.getName())\n                .forJob(jobDetail)\n                .withSchedule(scheduleBuilder);\n        if (description != null) {\n            triggerBuilder.withDescription(description);","sourceCodeStart":768,"sourceCodeEnd":804,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/quartz/runtime/src/main/java/io/quarkus/quartz/runtime/QuartzSchedulerImpl.java#L768-L804","documentation":"Symmetric to the cron case: a simple (interval/delayed) job's misfire policy must be one of the simple-trigger policies. If the configured policy is a CRON-only value (e.g. cron-trigger-do-nothing), `createTrigger` throws this IllegalArgumentException while building the simple schedule.","triggerScenarios":"Configuring `quarkus.quartz.misfire-policy.<job>` with a cron-only value (such as cron-trigger-do-nothing) for a job scheduled with `every=...` / simple schedule, then creating the trigger.","commonSituations":"Reusing a shared config file where the policy was written for a cron job; renaming a job's schedule from cron to interval without adjusting the policy; misunderstanding the allowed enum values.","solutions":["Set the policy to a simple-valid option (e.g. simple-trigger-reschedule-now-with-existing-repeat-count, simple-trigger-reschedule-next-with-remaining-count, simple-trigger-ignore-misfire-policy, simple-trigger-smart-policy, simple-trigger-schedule-1, simple-trigger-schedule-2...)","Remove the misfire-policy entry to use the default smart policy","Consult `QuartzMisfirePolicy.validSimpleValues()` for the exact dashed names"],"exampleFix":"// before\nquarkus.quartz.misfire-policy.myJob=cron-trigger-do-nothing\n// after\nquarkus.quartz.misfire-policy.myJob=simple-trigger-reschedule-next-with-existing-count","handlingStrategy":"validation","validationCode":"boolean valid = QuartzMisfirePolicy.validSimpleValues().contains(configuredPolicy);\nif (!valid) { throw new IllegalArgumentException(\"Policy \" + configuredPolicy + \" not valid for simple jobs\"); }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Validate application.properties values with a config test before deployment","Never share misfire-policy keys between cron and interval jobs","Rely on the default smart policy for simple jobs"],"tags":["quarkus","quartz","configuration","misfire-policy"],"backgroundTag":"invalid-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"}