{"record":{"id":"e649fa42ba809ce5","repo":"quarkusio/quarkus","slug":"unable-to-resume-job","errorCode":null,"errorMessage":"Unable to resume job","messagePattern":"Unable to resume job","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"extensions/quartz/runtime/src/main/java/io/quarkus/quartz/runtime/QuartzSchedulerImpl.java","lineNumber":447,"sourceCode":"    @Override\n    public void resume(String identity) {\n        if (!isStarted()) {\n            throw notStarted();\n        }\n        Objects.requireNonNull(identity, \"Cannot resume - identity is null\");\n        if (identity.isEmpty()) {\n            LOGGER.warn(\"Cannot resume - identity is empty\");\n            return;\n        }\n        try {\n            String parsedIdentity = SchedulerUtils.lookUpPropertyValue(identity);\n            QuartzTrigger trigger = scheduledTasks.get(parsedIdentity);\n            if (trigger != null) {\n                scheduler.resumeJob(new JobKey(SchedulerUtils.lookUpPropertyValue(parsedIdentity), Scheduler.class.getName()));\n                events.fireScheduledJobResumed(new ScheduledJobResumed(trigger));\n            }\n        } catch (SchedulerException e) {\n            throw new RuntimeException(\"Unable to resume job\", e);\n        }\n    }\n\n    @Override\n    public boolean isRunning() {\n        if (!isStarted()) {\n            return false;\n        } else {\n            try {\n                return !scheduler.isInStandbyMode();\n            } catch (SchedulerException e) {\n                throw new IllegalStateException(\"Could not evaluate standby mode\", e);\n            }\n        }\n    }\n\n    @Override\n    public List<Trigger> getScheduledJobs() {","sourceCodeStart":429,"sourceCodeEnd":465,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/quartz/runtime/src/main/java/io/quarkus/quartz/runtime/QuartzSchedulerImpl.java#L429-L465","documentation":"Quarkus wraps a Quartz SchedulerException thrown while resuming a single paused job via Scheduler.resume(identity) into this RuntimeException. It calls scheduler.resumeJob(new JobKey(identity, ...)) on the underlying Quartz scheduler; JobStore failures surface here with the SchedulerException as cause.","triggerScenarios":"Calling Scheduler.resume(identity) for a known paused job when the underlying resumeJob call fails — JDBC JobStore DB error, cluster lock failure, or store state inconsistency for the job's triggers.","commonSituations":"JDBC store database outage or connection-pool exhaustion; job paused while the app ran against one DB then resumed against another; clustered mode with a stale scheduler entry holding locks.","solutions":["Inspect the cause SchedulerException for the underlying store error","Verify datasource connectivity when using the jdbc store","Check for stale rows/locks in the Quartz cluster tables (qrtz_locks, qrtz_scheduler_state)","Retry the resume after the store is healthy"],"exampleFix":"// before\nscheduler.resume(\"myJob\");\n// after\ntry {\n    scheduler.resume(\"myJob\");\n} catch (RuntimeException e) {\n    LOGGER.errorf(e.getCause(), \"resume failed for job\");\n}","handlingStrategy":"try-catch","validationCode":"Trigger t = scheduler.getScheduledJob(identity);\nif (t == null) { LOGGER.warnf(\"Job %s not registered; resume skipped\", identity); }","typeGuard":null,"tryCatchPattern":"try {\n    scheduler.resume(identity);\n} catch (RuntimeException e) {\n    LOGGER.errorf(e.getCause(), \"Cannot resume job %s\", identity);\n}","preventionTips":["Verify the job exists and is paused before resuming","Check store connectivity when using the jdbc store","Track pause/resume state per identity to make operations idempotent"],"tags":["quartz","scheduler","resume-job","jobstore"],"backgroundTag":"scheduler-job-resume-failed","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"}