quarkusio/quarkus · error · RuntimeException

Unable to resume scheduler

Error message

Unable to resume scheduler

What it means

Quarkus wraps a Quartz SchedulerException thrown while resuming the scheduler from standby via Scheduler.resume() into this RuntimeException. resume() calls scheduler.start() on the underlying Quartz scheduler; failures from the JobStore or trigger recovery surface here with the SchedulerException as cause.

Source

Thrown at extensions/quartz/runtime/src/main/java/io/quarkus/quartz/runtime/QuartzSchedulerImpl.java:425

            return true;
        } catch (SchedulerException e1) {
            LOGGER.warnf(e1, "Cannot obtain triggers for job with identity %s", identity);
            return false;
        }
    }

    @Override
    public void resume() {
        if (!isStarted()) {
            throw notStarted();
        }
        try {
            if (scheduler != null) {
                scheduler.start();
                events.fireSchedulerResumed();
            }
        } catch (SchedulerException e) {
            throw new RuntimeException("Unable to resume scheduler", e);
        }
    }

    @Override
    public void resume(String identity) {
        if (!isStarted()) {
            throw notStarted();
        }
        Objects.requireNonNull(identity, "Cannot resume - identity is null");
        if (identity.isEmpty()) {
            LOGGER.warn("Cannot resume - identity is empty");
            return;
        }
        try {
            String parsedIdentity = SchedulerUtils.lookUpPropertyValue(identity);
            QuartzTrigger trigger = scheduledTasks.get(parsedIdentity);
            if (trigger != null) {
                scheduler.resumeJob(new JobKey(SchedulerUtils.lookUpPropertyValue(parsedIdentity), Scheduler.class.getName()));

View on GitHub (pinned to e1c734241f)

Solutions

  1. Check the cause SchedulerException for the JobStore/DB error
  2. Verify the datasource used by the quartz store is up
  3. Check cluster health / qrtz scheduler state rows if running clustered
  4. Restart the application if the scheduler cannot recover the store

Example fix

// before
scheduler.resume();
// after
try {
    scheduler.resume();
} catch (RuntimeException e) {
    LOGGER.errorf(e.getCause(), "Quartz resume failed; verify JobStore availability");
}
Defensive patterns

Strategy: try-catch

Validate before calling

if (!scheduler.isStarted()) { throw new IllegalStateException("Scheduler not started"); }

Try / catch

try {
    scheduler.resume();
} catch (RuntimeException e) {
    LOGGER.errorf(e.getCause(), "Cannot resume scheduler");
    // retry after store recovers
}

Prevention

When it happens

Trigger: Calling Scheduler.resume() after pause() when the underlying Quartz scheduler.start() fails — typically a JobStore error (JDBC store DB unreachable, cluster recovery failure) during restart of trigger processing.

Common situations: Database-backed store was down during standby and is still unreachable at resume; clustered Quartz instance fails to reacquire triggers; corrupted trigger state in qrtz tables.

Related errors


AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05). Data as JSON: /api/errors/f4406d78ed1ebcbf. Report an issue: GitHub.