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
- Check the cause SchedulerException for the JobStore/DB error
- Verify the datasource used by the quartz store is up
- Check cluster health / qrtz scheduler state rows if running clustered
- 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
- Only resume after the JobStore datasource is confirmed healthy
- Pair pause()/resume() calls with idempotent state tracking
- Alert on resume failure — jobs stay paused otherwise
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
- Unable to pause scheduler
- Unable to pause job
- Unable to resume job
- Unable to unschedule job with identity: ${identity}
- Unable to start Scheduler
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/f4406d78ed1ebcbf.
Report an issue: GitHub.