apache/dolphinscheduler · error · SchedulerException

QUARTZ_SCHEDULER_START_ERROR

QUARTZ_SCHEDULER_START_ERROR

Error message

QUARTZ_SCHEDULER_START_ERROR

What it means

The underlying Quartz scheduler.start() threw while transitioning the scheduler from STANDBY to RUNNING — typically because the Quartz JDBC job store cannot acquire its cluster lock, the datasource is misconfigured/unreachable, or a non-serialized Job class breaks startup. It is wrapped in a SchedulerException so the caller cannot silently run with a dead scheduler.

Source

Thrown at dolphinscheduler-scheduler-plugin/dolphinscheduler-scheduler-quartz/src/main/java/org/apache/dolphinscheduler/scheduler/quartz/QuartzScheduler.java:48

import org.quartz.Scheduler;

import com.google.common.collect.Sets;

@Slf4j
public class QuartzScheduler implements SchedulerApi {

    private final Scheduler scheduler;

    public QuartzScheduler(Scheduler scheduler) {
        this.scheduler = scheduler;
    }

    @Override
    public void start() throws SchedulerException {
        try {
            scheduler.start();
        } catch (Exception e) {
            throw new SchedulerException(QuartzSchedulerExceptionEnum.QUARTZ_SCHEDULER_START_ERROR, e);
        }
    }

    @Override
    public void insertOrUpdateScheduleTask(int projectId, Schedule schedule) throws SchedulerException {
        try {
            CronTrigger cornTrigger = QuartzCornTriggerBuilder.newBuilder()
                    .withProjectId(projectId)
                    .withSchedule(schedule)
                    .build();
            JobDetail jobDetail = QuartzJobDetailBuilder.newBuilder()
                    .withProjectId(projectId)
                    .withSchedule(schedule.getId())
                    .build();
            scheduler.scheduleJob(jobDetail, Sets.newHashSet(cornTrigger), true);
            log.info("Success scheduleJob: {} with trigger: {} at quartz", jobDetail, cornTrigger);
        } catch (Exception e) {
            log.error("Failed to add scheduler task, projectId: {}, scheduler: {}", projectId, schedule, e);

View on GitHub (pinned to 02eac45a1b)

Solutions

  1. Verify the Quartz datasource (JDBC URL, credentials, driver) and that the quartz tables exist and are reachable
  2. Check for another master holding the Quartz cluster lock (QRTZ_LOCKS) or misaligned cluster properties (org.quartz.jobStore.clusterCheckinInterval)
  3. Inspect the caused-by exception in logs: ObjectNotFoundException indicates a non-serializable Job/Trigger class
  4. Restart the master after fixing the configuration so start() can be retried
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at dolphinscheduler-scheduler-plugin/dolphinscheduler-scheduler-quartz/src/main/java/org/apache/dolphinscheduler/scheduler/quartz/QuartzScheduler.java:48 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of apache/dolphinscheduler@02eac45a1b (2026-09-06). Data as JSON: /api/errors/e8c072cba921dac6. Report an issue: GitHub.