org.quartz.impl.jdbcjobstore
Class DBSemaphore

java.lang.Object
  extended by org.quartz.impl.jdbcjobstore.DBSemaphore
All Implemented Interfaces:
Constants, Semaphore, StdJDBCConstants, TablePrefixAware
Direct Known Subclasses:
StdRowLockSemaphore, UpdateLockRowSemaphore

public abstract class DBSemaphore
extends Object
implements Semaphore, Constants, StdJDBCConstants, TablePrefixAware

Base class for database based lock handlers for providing thread/resource locking in order to protect resources from being altered by multiple threads at the same time.


Field Summary
 
Fields inherited from interface org.quartz.impl.jdbcjobstore.StdJDBCConstants
COUNT_MISFIRED_TRIGGERS_IN_STATE, DELETE_ALL_BLOB_TRIGGERS, DELETE_ALL_CALENDARS, DELETE_ALL_CRON_TRIGGERS, DELETE_ALL_JOB_DETAILS, DELETE_ALL_PAUSED_TRIGGER_GRPS, DELETE_ALL_SIMPLE_TRIGGERS, DELETE_ALL_SIMPROP_TRIGGERS, DELETE_ALL_TRIGGERS, DELETE_BLOB_TRIGGER, DELETE_CALENDAR, DELETE_CRON_TRIGGER, DELETE_FIRED_TRIGGER, DELETE_FIRED_TRIGGERS, DELETE_INSTANCES_FIRED_TRIGGERS, DELETE_JOB_DETAIL, DELETE_NO_RECOVERY_FIRED_TRIGGERS, DELETE_PAUSED_TRIGGER_GROUP, DELETE_PAUSED_TRIGGER_GROUPS, DELETE_SCHEDULER_STATE, DELETE_SIMPLE_TRIGGER, DELETE_TRIGGER, INSERT_BLOB_TRIGGER, INSERT_CALENDAR, INSERT_CRON_TRIGGER, INSERT_FIRED_TRIGGER, INSERT_JOB_DETAIL, INSERT_PAUSED_TRIGGER_GROUP, INSERT_SCHEDULER_STATE, INSERT_SIMPLE_TRIGGER, INSERT_TRIGGER, SCHED_NAME_SUBST, SELECT_BLOB_TRIGGER, SELECT_CALENDAR, SELECT_CALENDAR_EXISTENCE, SELECT_CALENDARS, SELECT_CRON_TRIGGER, SELECT_FIRED_TRIGGER, SELECT_FIRED_TRIGGER_GROUP, SELECT_FIRED_TRIGGER_INSTANCE_NAMES, SELECT_FIRED_TRIGGERS, SELECT_FIRED_TRIGGERS_OF_JOB, SELECT_FIRED_TRIGGERS_OF_JOB_GROUP, SELECT_HAS_MISFIRED_TRIGGERS_IN_STATE, SELECT_INSTANCES_FIRED_TRIGGERS, SELECT_INSTANCES_RECOVERABLE_FIRED_TRIGGERS, SELECT_JOB_DETAIL, SELECT_JOB_EXECUTION_COUNT, SELECT_JOB_EXISTENCE, SELECT_JOB_FOR_TRIGGER, SELECT_JOB_GROUPS, SELECT_JOB_NONCONCURRENT, SELECT_JOBS_IN_GROUP, SELECT_JOBS_IN_GROUP_LIKE, SELECT_MISFIRED_TRIGGERS, SELECT_MISFIRED_TRIGGERS_IN_GROUP_IN_STATE, SELECT_MISFIRED_TRIGGERS_IN_STATE, SELECT_NEXT_FIRE_TIME, SELECT_NEXT_TRIGGER_TO_ACQUIRE, SELECT_NUM_CALENDARS, SELECT_NUM_JOBS, SELECT_NUM_TRIGGERS, SELECT_NUM_TRIGGERS_FOR_JOB, SELECT_NUM_TRIGGERS_IN_GROUP, SELECT_PAUSED_TRIGGER_GROUP, SELECT_PAUSED_TRIGGER_GROUPS, SELECT_REFERENCED_CALENDAR, SELECT_SCHEDULER_STATE, SELECT_SCHEDULER_STATES, SELECT_SIMPLE_TRIGGER, SELECT_TRIGGER, SELECT_TRIGGER_DATA, SELECT_TRIGGER_EXISTENCE, SELECT_TRIGGER_FOR_FIRE_TIME, SELECT_TRIGGER_GROUPS, SELECT_TRIGGER_GROUPS_FILTERED, SELECT_TRIGGER_STATE, SELECT_TRIGGER_STATUS, SELECT_TRIGGERS_FOR_CALENDAR, SELECT_TRIGGERS_FOR_JOB, SELECT_TRIGGERS_IN_GROUP, SELECT_TRIGGERS_IN_GROUP_LIKE, SELECT_TRIGGERS_IN_STATE, TABLE_PREFIX_SUBST, UPDATE_BLOB_TRIGGER, UPDATE_CALENDAR, UPDATE_CRON_TRIGGER, UPDATE_FIRED_TRIGGER, UPDATE_JOB_DATA, UPDATE_JOB_DETAIL, UPDATE_JOB_TRIGGER_STATES, UPDATE_JOB_TRIGGER_STATES_FROM_OTHER_STATE, UPDATE_SCHEDULER_STATE, UPDATE_SIMPLE_TRIGGER, UPDATE_TRIGGER, UPDATE_TRIGGER_GROUP_STATE_FROM_STATE, UPDATE_TRIGGER_GROUP_STATE_FROM_STATES, UPDATE_TRIGGER_SKIP_DATA, UPDATE_TRIGGER_STATE, UPDATE_TRIGGER_STATE_FROM_STATE, UPDATE_TRIGGER_STATE_FROM_STATES, UPDATE_TRIGGER_STATES_FROM_OTHER_STATES
 
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
DBSemaphore(String tablePrefix, String schedName, String defaultSQL, String defaultInsertSQL)
           
 
Method Summary
protected abstract  void executeSQL(Connection conn, String lockName, String theExpandedSQL, String theExpandedInsertSQL)
          Execute the SQL that will lock the proper database row.
protected  org.slf4j.Logger getLog()
           
 String getSchedName()
           
protected  String getSchedulerNameLiteral()
           
protected  String getSQL()
           
protected  String getTablePrefix()
           
 boolean isLockOwner(String lockName)
          Determine whether the calling thread owns a lock on the identified resource.
 boolean obtainLock(Connection conn, String lockName)
          Grants a lock on the identified resource to the calling thread (blocking until it is available).
 void releaseLock(String lockName)
          Release the lock on the identified resource if it is held by the calling thread.
 boolean requiresConnection()
          This Semaphore implementation does use the database.
protected  void setInsertSQL(String insertSql)
           
 void setSchedName(String schedName)
           
protected  void setSQL(String sql)
           
 void setTablePrefix(String tablePrefix)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DBSemaphore

public DBSemaphore(String tablePrefix,
                   String schedName,
                   String defaultSQL,
                   String defaultInsertSQL)
Method Detail

getLog

protected org.slf4j.Logger getLog()

executeSQL

protected abstract void executeSQL(Connection conn,
                                   String lockName,
                                   String theExpandedSQL,
                                   String theExpandedInsertSQL)
                            throws LockException
Execute the SQL that will lock the proper database row.

Throws:
LockException

obtainLock

public boolean obtainLock(Connection conn,
                          String lockName)
                   throws LockException
Grants a lock on the identified resource to the calling thread (blocking until it is available).

Specified by:
obtainLock in interface Semaphore
Parameters:
conn - Database connection used to establish lock. Can be null if Semaphore.requiresConnection() returns false.
Returns:
true if the lock was obtained.
Throws:
LockException

releaseLock

public void releaseLock(String lockName)
Release the lock on the identified resource if it is held by the calling thread.

Specified by:
releaseLock in interface Semaphore

isLockOwner

public boolean isLockOwner(String lockName)
Determine whether the calling thread owns a lock on the identified resource.


requiresConnection

public boolean requiresConnection()
This Semaphore implementation does use the database.

Specified by:
requiresConnection in interface Semaphore
See Also:
Semaphore.obtainLock(Connection, String), Semaphore.releaseLock(String)

getSQL

protected String getSQL()

setSQL

protected void setSQL(String sql)

setInsertSQL

protected void setInsertSQL(String insertSql)

getSchedulerNameLiteral

protected String getSchedulerNameLiteral()

getSchedName

public String getSchedName()

setSchedName

public void setSchedName(String schedName)
Specified by:
setSchedName in interface TablePrefixAware

getTablePrefix

protected String getTablePrefix()

setTablePrefix

public void setTablePrefix(String tablePrefix)
Specified by:
setTablePrefix in interface TablePrefixAware


Copyright 2001-2015, Terracotta, Inc.