Class JmixLocalDataSourceJobStore

java.lang.Object
org.quartz.impl.jdbcjobstore.JobStoreSupport
org.quartz.impl.jdbcjobstore.JobStoreCMT
org.springframework.scheduling.quartz.LocalDataSourceJobStore
io.jmix.quartz.impl.JmixLocalDataSourceJobStore
All Implemented Interfaces:
org.quartz.impl.jdbcjobstore.Constants, org.quartz.spi.JobStore

public class JmixLocalDataSourceJobStore extends org.springframework.scheduling.quartz.LocalDataSourceJobStore
A LocalDataSourceJobStore that honors org.quartz.jobStore.useDBLocks=true on HSQLDB.

The parent store unconditionally downgrades HSQLDB to the in-JVM SimpleSemaphore — a leftover from HSQLDB 1.x which had no SELECT ... FOR UPDATE. The in-JVM semaphore is released after every job store operation while transactional job store writes stay uncommitted, so a saving transaction and the scheduler polling thread deadlock on databases where writers block readers. Modern HSQLDB supports SELECT ... FOR UPDATE, so when database locking is explicitly requested it is restored here.

  • Nested Class Summary

    Nested classes/interfaces inherited from class org.quartz.impl.jdbcjobstore.JobStoreSupport

    org.quartz.impl.jdbcjobstore.JobStoreSupport.RecoverMisfiredJobsResult, org.quartz.impl.jdbcjobstore.JobStoreSupport.TransactionCallback<T>, org.quartz.impl.jdbcjobstore.JobStoreSupport.TransactionValidator<T>, org.quartz.impl.jdbcjobstore.JobStoreSupport.VoidTransactionCallback
  • Field Summary

    Fields inherited from class org.springframework.scheduling.quartz.LocalDataSourceJobStore

    NON_TX_DATA_SOURCE_PREFIX, TX_DATA_SOURCE_PREFIX

    Fields inherited from class org.quartz.impl.jdbcjobstore.JobStoreCMT

    dontSetNonManagedTXConnectionAutoCommitFalse, nonManagedTxDsName, setTxIsolationLevelReadCommitted

    Fields inherited from class org.quartz.impl.jdbcjobstore.JobStoreSupport

    calendarCache, delegateClass, delegateClassName, delegateInitString, dsName, firstCheckIn, instanceId, instanceName, lastCheckin, LOCK_STATE_ACCESS, LOCK_TRIGGER_ACCESS, maxToRecoverAtATime, sigChangeForTxCompletion, tablePrefix, useProperties

    Fields inherited from interface org.quartz.impl.jdbcjobstore.Constants

    ALIAS_COL_NEXT_FIRE_TIME, ALL_GROUPS_PAUSED, COL_BLOB, COL_CALENDAR, COL_CALENDAR_NAME, COL_CHECKIN_INTERVAL, COL_CRON_EXPRESSION, COL_DESCRIPTION, COL_END_TIME, COL_ENTRY_ID, COL_ENTRY_STATE, COL_FIRED_TIME, COL_INSTANCE_NAME, COL_IS_DURABLE, COL_IS_NONCONCURRENT, COL_IS_UPDATE_DATA, COL_IS_VOLATILE, COL_JOB_CLASS, COL_JOB_DATAMAP, COL_JOB_GROUP, COL_JOB_NAME, COL_LAST_CHECKIN_TIME, COL_LOCK_NAME, COL_MISFIRE_INSTRUCTION, COL_NEXT_FIRE_TIME, COL_PREV_FIRE_TIME, COL_PRIORITY, COL_REPEAT_COUNT, COL_REPEAT_INTERVAL, COL_REQUESTS_RECOVERY, COL_SCHED_TIME, COL_SCHEDULER_NAME, COL_START_TIME, COL_TIME_ZONE_ID, COL_TIMES_TRIGGERED, COL_TRIGGER_GROUP, COL_TRIGGER_NAME, COL_TRIGGER_STATE, COL_TRIGGER_TYPE, DEFAULT_TABLE_PREFIX, STATE_ACQUIRED, STATE_BLOCKED, STATE_COMPLETE, STATE_DELETED, STATE_ERROR, STATE_EXECUTING, STATE_MISFIRED, STATE_PAUSED, STATE_PAUSED_BLOCKED, STATE_WAITING, TABLE_BLOB_TRIGGERS, TABLE_CALENDARS, TABLE_CRON_TRIGGERS, TABLE_FIRED_TRIGGERS, TABLE_JOB_DETAILS, TABLE_LOCKS, TABLE_PAUSED_TRIGGERS, TABLE_SCHEDULER_STATE, TABLE_SIMPLE_TRIGGERS, TABLE_TRIGGERS, TTYPE_BLOB, TTYPE_CAL_INT, TTYPE_CRON, TTYPE_DAILY_TIME_INT, TTYPE_SIMPLE
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    initialize(org.quartz.spi.ClassLoadHelper loadHelper, org.quartz.spi.SchedulerSignaler signaler)
     

    Methods inherited from class org.springframework.scheduling.quartz.LocalDataSourceJobStore

    closeConnection

    Methods inherited from class org.quartz.impl.jdbcjobstore.JobStoreCMT

    executeInLock, getNonManagedTXConnection, getNonManagedTXDataSource, isDontSetNonManagedTXConnectionAutoCommitFalse, isTxIsolationLevelReadCommitted, setDontSetNonManagedTXConnectionAutoCommitFalse, setNonManagedTXDataSource, setTxIsolationLevelReadCommitted, shutdown

    Methods inherited from class org.quartz.impl.jdbcjobstore.JobStoreSupport

    acquireNextTrigger, acquireNextTriggers, calcFailedIfAfter, calendarExists, canUseProperties, checkBlockedState, checkExists, checkExists, checkExists, checkExists, cleanupConnection, clearAllSchedulingData, clearAllSchedulingData, clearAndGetSignalSchedulingChangeOnTxCompletion, clusterCheckIn, clusterRecover, commitConnection, doCheckin, doRecoverMisfires, executeInNonManagedTXLock, executeWithoutLock, findFailedInstances, getAcquireRetryDelay, getAttributeRestoringConnection, getCalendarNames, getCalendarNames, getClassLoadHelper, getClusterCheckinInterval, getConnection, getDataSource, getDbRetryInterval, getDelegate, getDoubleCheckLockMisfireHandler, getDriverDelegateClass, getDriverDelegateInitString, getEstimatedTimeToReleaseAndAcquireTrigger, getFiredTriggerRecordId, getInstanceId, getInstanceName, getJobDetails, getJobGroupNames, getJobGroupNames, getJobKeys, getJobNames, getLockHandler, getLog, getMakeThreadsDaemons, getMaxMisfiresToHandleAtATime, getMisfireThreshold, getMisfireTime, getNumberOfCalendars, getNumberOfCalendars, getNumberOfJobs, getNumberOfJobs, getNumberOfTriggers, getNumberOfTriggers, getPausedTriggerGroups, getPausedTriggerGroups, getSelectWithLockSQL, getTablePrefix, getThreadExecutor, getTriggerGroupNames, getTriggerGroupNames, getTriggerKeys, getTriggerNames, getTriggersByJobAndTriggerGroup, getTriggersByJobAndTriggerGroup, getTriggersForJob, getTriggersForJob, getTriggerState, getTriggerState, getUseDBLocks, isAcquireTriggersWithinLock, isClustered, isDontSetAutoCommitFalse, isLockOnInsert, isThreadsInheritInitializersClassLoadContext, isTxIsolationLevelSerializable, isUsingEnhancedStatements, jobExists, logWarnIfNonZero, pauseAll, pauseAll, pauseJob, pauseJobs, pauseTrigger, pauseTrigger, pauseTriggerGroup, pauseTriggers, recoverJobs, recoverJobs, recoverMisfiredJobs, releaseAcquiredTrigger, releaseAcquiredTrigger, releaseLock, removeCalendar, removeCalendar, removeJob, removeJob, removeJobs, removeTrigger, removeTrigger, removeTriggers, replaceTrigger, replaceTrigger, resetTriggerFromErrorState, resumeAll, resumeAll, resumeJob, resumeJobs, resumeTrigger, resumeTrigger, resumeTriggerGroup, resumeTriggers, retrieveCalendar, retrieveCalendar, retrieveJob, retrieveJob, retrieveJobs, retrieveTrigger, retrieveTrigger, retryExecuteInNonManagedTXLock, rollbackConnection, schedulerPaused, schedulerResumed, schedulerStarted, setAcquireTriggersWithinLock, setClusterCheckinInterval, setDataSource, setDbRetryInterval, setDontSetAutoCommitFalse, setDoubleCheckLockMisfireHandler, setDriverDelegateClass, setDriverDelegateInitString, setInstanceId, setInstanceName, setIsClustered, setLockHandler, setLockOnInsert, setMakeThreadsDaemons, setMaxMisfiresToHandleAtATime, setMisfireThreshold, setSelectWithLockSQL, setTablePrefix, setThreadExecutor, setThreadPoolSize, setThreadsInheritInitializersClassLoadContext, setTxIsolationLevelSerializable, setUseDBLocks, setUseEnhancedStatements, setUseProperties, signalSchedulingChangeImmediately, signalSchedulingChangeOnTxCompletion, storeCalendar, storeCalendar, storeJob, storeJob, storeJobAndTrigger, storeJobsAndTriggers, storeTrigger, storeTrigger, supportsPersistence, triggeredJobComplete, triggeredJobComplete, triggerExists, triggerFired, triggersFired, updateMisfiredTrigger

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.quartz.spi.JobStore

    getTriggersByJobGroup, getTriggersByTriggerGroup
  • Constructor Details

    • JmixLocalDataSourceJobStore

      public JmixLocalDataSourceJobStore()
  • Method Details

    • initialize

      public void initialize(org.quartz.spi.ClassLoadHelper loadHelper, org.quartz.spi.SchedulerSignaler signaler) throws org.quartz.SchedulerConfigException
      Specified by:
      initialize in interface org.quartz.spi.JobStore
      Overrides:
      initialize in class org.springframework.scheduling.quartz.LocalDataSourceJobStore
      Throws:
      org.quartz.SchedulerConfigException