spring-bootquartz

Unable to retrieve quartz job in springboot app


I am able to create a quartz job in spring but that is about the only thing I can do. The job does not fire and I can check that the job exists but am unable to retrieve it.

I am using springboot 2.6.6. My configuration looks like this:

spring:
  ################################
  # application properties
  ################################
  application:
    name: job-manager
  ################################
  # postgress database
  ################################
  datasource:
    url: ${db.url}
    username: ${db.username}
    password: ${db.password}
  jpa:
    properties:
      hibernate:
        dialect: org.hibernate.dialect.PostgreSQLDialect
        ddl-auto: validate
        #format_sql: true
    show-sql: true
    ################################
    # Quartz configuration
    ################################
  quartz:
    auto-startup: false
    job-store-type: jdbc 
    wait-for-jobs-to-complete-on-shutdown: true
    jdbc.initialize-schema: never
    properties:
      org.quartz.threadPool.threadCount: 5   # each thread runs a concurrent job
org:
  quartz:
    jobStore.driverDelegateClass: org.quartz.impl.jdbcjobstore.PostgreSQLDelegate

I am able to create a new job and its trigger but the trigger never fires. I can also execute the following without any problem and it returns true:

scheduler.checkExists(new JobKey(jobName, jobGroupName));

The above snippet returns true. However when I try to execute

jobDetail = scheduler.getJobDetail(new JobKey(jobName, jobGroupName));

I get the following error:

org.quartz.JobPersistenceException: Couldn't retrieve job: Bad value for type long : \xaced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787000737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f40000000000010770800000010000000007800
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveJob(JobStoreSupport.java:1401) ~[quartz-2.3.2.jar:na]
    at org.quartz.impl.jdbcjobstore.JobStoreSupport$9.execute(JobStoreSupport.java:1382) ~[quartz-2.3.2.jar:na]

The nested exception is

Caused by: org.postgresql.util.PSQLException: Bad value for type long : \xaced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787000737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f40000000000010770800000010000000007800

Any ideas. I have found one similar post without an answer. Any help would be appreciated.


Solution

  • The issue is configuration 'org.quartz.jobStore.driverDelegateClass' is not correctly picking up 'org.quartz.impl.jdbcjobstore.PostgreSQLDelegate'. As per your exception, Delegate class is still the default implementation of 'org.quartz.impl.jdbcjobstore.StdJDBCDelegate'

    There seems to be error with yaml configuration, refer here : Spring Boot Quartz Scheduler Configuration