{"record":{"id":"19d203c61c8a51ca","repo":"quarkusio/quarkus","slug":"schedulerexception-while-getting-trigger-no-messa","errorCode":null,"errorMessage":"SchedulerException while getting trigger (no message)","messagePattern":"SchedulerException while getting trigger \\(no message\\)","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"extensions/quartz/runtime/src/main/java/io/quarkus/quartz/runtime/QuartzSchedulerImpl.java","lineNumber":1042,"sourceCode":"            // Job is disabled\n            return null;\n        }\n\n        JobInstrumenter instrumenter = null;\n        if (schedulerConfig.tracingEnabled() && jobInstrumenter.isResolvable()) {\n            instrumenter = jobInstrumenter.get();\n        }\n        invoker = initInvoker(invoker, events, scheduled.concurrentExecution(), skipPredicate, instrumenter,\n                vertx, task != null && runtimeConfig.runBlockingScheduledMethodOnQuartzThread(),\n                SchedulerUtils.parseExecutionMaxDelayAsMillis(scheduled), blockingExecutor);\n        QuartzTrigger quartzTrigger = new QuartzTrigger(trigger.getKey(),\n                new Function<>() {\n                    @Override\n                    public org.quartz.Trigger apply(TriggerKey triggerKey) {\n                        try {\n                            return scheduler.getTrigger(triggerKey);\n                        } catch (SchedulerException e) {\n                            throw new IllegalStateException(e);\n                        }\n                    }\n                }, invoker,\n                SchedulerUtils.parseOverdueGracePeriod(scheduled, defaultOverdueGracePeriod),\n                runtimeConfig.runBlockingScheduledMethodOnQuartzThread(), true, null, description);\n        QuartzTrigger existing = scheduledTasks.putIfAbsent(scheduled.identity(), quartzTrigger);\n\n        if (existing != null) {\n            throw new IllegalStateException(\"A job with this identity is already scheduled: \" + scheduled.identity());\n        }\n\n        try {\n            if (oldTrigger != null) {\n                scheduler.rescheduleJob(trigger.getKey(), trigger);\n                LOGGER.debugf(\"Rescheduled job definition with config %s\", scheduled);\n            } else {\n                scheduler.scheduleJob(jobDetail, trigger);\n                LOGGER.debugf(\"Scheduled job definition with config %s\", scheduled);","sourceCodeStart":1024,"sourceCodeEnd":1060,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/quartz/runtime/src/main/java/io/quarkus/quartz/runtime/QuartzSchedulerImpl.java#L1024-L1060","documentation":"While reconciling an annotated @Scheduled job, the wrapper fetches the current Quartz trigger; any SchedulerException raised by the underlying scheduler (JDBC store down, corrupted trigger, schema issues) is wrapped in an IllegalStateException with no custom message, so the original SchedulerException is the cause to inspect.","triggerScenarios":"Scheduler lookup of a TriggerKey during programmatic scheduling of a @Scheduled-defined job fails: DB store unreachable, table missing/locked, Quartz tables schema mismatch, or scheduler not started.","commonSituations":"Quartz JDBC tables not initialized (missing quartz tables DDL); DB connection pool exhausted; upgrading Quarkus/Quartz with an incompatible QRTZ_ schema; network outage to the configured datasource.","solutions":["Inspect the caused-by SchedulerException for the real root cause","Verify the Quartz JDBC store tables exist and match the Quartz version (run the Quartz DDL scripts)","Test the datasource connectivity and pool health used by `quarkus.quartz.store-type=db`","Fall back to `store-type=memory` to isolate whether the DB store is the problem"],"exampleFix":"null","handlingStrategy":"try-catch","validationCode":"// verify store health before scheduling\ntry (Connection c = dataSource.getConnection()) { /* DB reachable */ }","typeGuard":null,"tryCatchPattern":"try { scheduler.newJob(id).schedule(); } catch (IllegalStateException e) {\n    Throwable root = e; while (root.getCause() != null) root = root.getCause();\n    if (root instanceof SchedulerException) { /* handle store outage */ }\n}","preventionTips":["Run Quartz DDL scripts matching the bundled Quartz version","Monitor the Quartz datasource and connection pool","Verify trigger state in QRTZ_TRIGGERS if errors persist after a crash"],"tags":["quarkus","quartz","scheduler-exception","db-store"],"backgroundTag":"scheduler-store-unavailable","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"}