public abstract class AbstractTerracottaJobStore extends Object implements JobStore
Modifier and Type | Field and Description |
---|---|
static String |
TC_CONFIG_PROP |
static String |
TC_CONFIGURL_PROP |
static String |
TC_REJOIN_PROP |
Constructor and Description |
---|
AbstractTerracottaJobStore() |
Modifier and Type | Method and Description |
---|---|
List<OperableTrigger> |
acquireNextTriggers(long noLaterThan,
int maxCount,
long timeWindow)
Get a handle to the next trigger to be fired, and mark it as 'reserved'
by the calling scheduler.
|
boolean |
checkExists(JobKey jobKey)
Determine whether a
Job with the given identifier already
exists within the scheduler. |
boolean |
checkExists(TriggerKey triggerKey)
Determine whether a
Trigger with the given identifier already
exists within the scheduler. |
void |
clearAllSchedulingData()
|
long |
getAcquireRetryDelay(int failureCount)
Get the amount of time (in ms) to wait when accessing this job store
repeatedly fails.
|
List<String> |
getCalendarNames()
Get the names of all of the
s
in the JobStore . |
long |
getEstimatedTimeToReleaseAndAcquireTrigger()
How long (in milliseconds) the
JobStore implementation
estimates that it will take to release a trigger and acquire a new one. |
List<String> |
getJobGroupNames()
Get the names of all of the
groups. |
Set<JobKey> |
getJobKeys(GroupMatcher<JobKey> matcher)
Get the keys of all of the
s that
have the given group name. |
int |
getNumberOfCalendars()
Get the number of
s that are
stored in the JobsStore . |
int |
getNumberOfJobs()
Get the number of
s that are
stored in the JobsStore . |
int |
getNumberOfTriggers()
Get the number of
s that are
stored in the JobsStore . |
Set<String> |
getPausedTriggerGroups() |
protected TerracottaJobStoreExtensions |
getRealJobStore() |
List<String> |
getTriggerGroupNames()
Get the names of all of the
groups. |
Set<TriggerKey> |
getTriggerKeys(GroupMatcher<TriggerKey> matcher)
Get the names of all of the
s
that have the given group name. |
List<OperableTrigger> |
getTriggersForJob(JobKey jobKey)
Get all of the Triggers that are associated to the given Job.
|
Trigger.TriggerState |
getTriggerState(TriggerKey triggerKey)
Get the current state of the identified
. |
String |
getUUID() |
void |
initialize(ClassLoadHelper loadHelper,
SchedulerSignaler signaler)
Called by the QuartzScheduler before the
JobStore is
used, in order to give the it a chance to initialize. |
boolean |
isClustered()
Whether or not the
JobStore implementation is clustered. |
void |
pauseAll()
Pause all triggers - equivalent of calling
pauseTriggerGroup(group)
on every group. |
void |
pauseJob(JobKey jobKey)
Pause the
with the given name - by
pausing all of its current Trigger s. |
Collection<String> |
pauseJobs(GroupMatcher<JobKey> matcher)
Pause all of the
in the given
group - by pausing all of their Trigger s. |
void |
pauseTrigger(TriggerKey triggerKey)
Pause the
with the given key. |
Collection<String> |
pauseTriggers(GroupMatcher<TriggerKey> matcher)
Pause all of the
in the
given group. |
void |
releaseAcquiredTrigger(OperableTrigger trigger)
Inform the
JobStore that the scheduler no longer plans to
fire the given Trigger , that it had previously acquired
(reserved). |
boolean |
removeCalendar(String calName)
Remove (delete) the
with the
given name. |
boolean |
removeJob(JobKey jobKey)
|
boolean |
removeJobs(List<JobKey> arg0) |
boolean |
removeTrigger(TriggerKey triggerKey)
Remove (delete) the
with the
given key. |
boolean |
removeTriggers(List<TriggerKey> arg0) |
boolean |
replaceTrigger(TriggerKey triggerKey,
OperableTrigger newTrigger)
Remove (delete) the
with the
given key, and store the new given one - which must be associated
with the same job. |
void |
resetTriggerFromErrorState(TriggerKey triggerKey)
Reset the current state of the identified
from Trigger.TriggerState.ERROR to Trigger.TriggerState.NORMAL or
Trigger.TriggerState.PAUSED as appropriate. |
void |
resumeAll()
Resume (un-pause) all triggers - equivalent of calling
resumeTriggerGroup(group)
on every group. |
void |
resumeJob(JobKey jobKey)
Resume (un-pause) the
with the
given key. |
Collection<String> |
resumeJobs(GroupMatcher<JobKey> matcher)
Resume (un-pause) all of the
in
the given group. |
void |
resumeTrigger(TriggerKey triggerKey)
Resume (un-pause) the
with the
given key. |
Collection<String> |
resumeTriggers(GroupMatcher<TriggerKey> matcher)
Resume (un-pause) all of the
in the given group. |
Calendar |
retrieveCalendar(String calName)
Retrieve the given
. |
JobDetail |
retrieveJob(JobKey jobKey)
|
OperableTrigger |
retrieveTrigger(TriggerKey triggerKey)
Retrieve the given
. |
void |
schedulerPaused()
Called by the QuartzScheduler to inform the
JobStore that
the scheduler has been paused. |
void |
schedulerResumed()
Called by the QuartzScheduler to inform the
JobStore that
the scheduler has resumed after being paused. |
void |
schedulerStarted()
Called by the QuartzScheduler to inform the
JobStore that
the scheduler has started. |
void |
setEstimatedTimeToReleaseAndAcquireTrigger(long estimate) |
void |
setInstanceId(String schedInstId)
Inform the
JobStore of the Scheduler instance's Id,
prior to initialize being invoked. |
void |
setInstanceName(String schedName)
Inform the
JobStore of the Scheduler instance's name,
prior to initialize being invoked. |
void |
setMisfireThreshold(long threshold) |
void |
setRejoin(String rejoin) |
void |
setSynchronousWrite(String synchWrite) |
void |
setTcConfig(String tcConfig) |
void |
setTcConfigUrl(String tcConfigUrl) |
void |
setTcRetryInterval(long tcRetryInterval) |
void |
setThreadPoolSize(int poolSize)
Tells the JobStore the pool size used to execute jobs
|
void |
shutdown()
Called by the QuartzScheduler to inform the
JobStore that
it should free up all of it's resources because the scheduler is
shutting down. |
void |
storeCalendar(String name,
Calendar calendar,
boolean replaceExisting,
boolean updateTriggers)
Store the given
. |
void |
storeJob(JobDetail newJob,
boolean replaceExisting)
Store the given
. |
void |
storeJobAndTrigger(JobDetail newJob,
OperableTrigger newTrigger)
|
void |
storeJobsAndTriggers(Map<JobDetail,Set<? extends Trigger>> arg0,
boolean arg1) |
void |
storeTrigger(OperableTrigger newTrigger,
boolean replaceExisting)
Store the given
. |
boolean |
supportsPersistence() |
void |
triggeredJobComplete(OperableTrigger trigger,
JobDetail jobDetail,
Trigger.CompletedExecutionInstruction instruction)
Inform the
JobStore that the scheduler has completed the
firing of the given Trigger (and the execution of its
associated Job completed, threw an exception, or was vetoed),
and that the
in the given JobDetail should be updated if the Job
is stateful. |
List<TriggerFiredResult> |
triggersFired(List<OperableTrigger> triggers)
Inform the
JobStore that the scheduler is now firing the
given Trigger (executing its associated Job ),
that it had previously acquired (reserved). |
public static final String TC_CONFIG_PROP
public static final String TC_CONFIGURL_PROP
public static final String TC_REJOIN_PROP
public String getUUID()
public void setMisfireThreshold(long threshold)
public void setTcRetryInterval(long tcRetryInterval)
public List<OperableTrigger> acquireNextTriggers(long noLaterThan, int maxCount, long timeWindow) throws JobPersistenceException
JobStore
acquireNextTriggers
in interface JobStore
noLaterThan
- If > 0, the JobStore should only return a Trigger
that will fire no later than the time represented in this value as
milliseconds.JobPersistenceException
JobStore.releaseAcquiredTrigger(OperableTrigger)
public List<String> getCalendarNames() throws JobPersistenceException
JobStore
Calendar
s
in the JobStore
.
If there are no Calendars in the given group name, the result should be
a zero-length array (not null
).
getCalendarNames
in interface JobStore
JobPersistenceException
public List<String> getJobGroupNames() throws JobPersistenceException
JobStore
Job
groups.
If there are no known group names, the result should be a zero-length
array (not null
).
getJobGroupNames
in interface JobStore
JobPersistenceException
public Set<JobKey> getJobKeys(GroupMatcher<JobKey> matcher) throws JobPersistenceException
JobStore
Job
s that
have the given group name.
If there are no jobs in the given group name, the result should be
an empty collection (not null
).
getJobKeys
in interface JobStore
JobPersistenceException
public int getNumberOfCalendars() throws JobPersistenceException
JobStore
Calendar
s that are
stored in the JobsStore
.getNumberOfCalendars
in interface JobStore
JobPersistenceException
public int getNumberOfJobs() throws JobPersistenceException
JobStore
Job
s that are
stored in the JobsStore
.getNumberOfJobs
in interface JobStore
JobPersistenceException
public int getNumberOfTriggers() throws JobPersistenceException
JobStore
Trigger
s that are
stored in the JobsStore
.getNumberOfTriggers
in interface JobStore
JobPersistenceException
public Set<String> getPausedTriggerGroups() throws JobPersistenceException
getPausedTriggerGroups
in interface JobStore
JobPersistenceException
public List<String> getTriggerGroupNames() throws JobPersistenceException
JobStore
Trigger
groups.
If there are no known group names, the result should be a zero-length
array (not null
).
getTriggerGroupNames
in interface JobStore
JobPersistenceException
public Set<TriggerKey> getTriggerKeys(GroupMatcher<TriggerKey> matcher) throws JobPersistenceException
JobStore
Trigger
s
that have the given group name.
If there are no triggers in the given group name, the result should be a
zero-length array (not null
).
getTriggerKeys
in interface JobStore
JobPersistenceException
public List<OperableTrigger> getTriggersForJob(JobKey jobKey) throws JobPersistenceException
JobStore
If there are no matches, a zero-length array should be returned.
getTriggersForJob
in interface JobStore
JobPersistenceException
public Trigger.TriggerState getTriggerState(TriggerKey triggerKey) throws JobPersistenceException
JobStore
Trigger
.getTriggerState
in interface JobStore
JobPersistenceException
Trigger.TriggerState
public void resetTriggerFromErrorState(TriggerKey triggerKey) throws JobPersistenceException
JobStore
Trigger
from Trigger.TriggerState.ERROR
to Trigger.TriggerState.NORMAL
or
Trigger.TriggerState.PAUSED
as appropriate.
Only affects triggers that are in ERROR state - if identified trigger is not in that state then the result is a no-op.
The result will be the trigger returning to the normal, waiting to be fired state, unless the trigger's group has been paused, in which case it will go into the PAUSED state.
resetTriggerFromErrorState
in interface JobStore
JobPersistenceException
public void initialize(ClassLoadHelper loadHelper, SchedulerSignaler signaler) throws SchedulerConfigException
JobStore
JobStore
is
used, in order to give the it a chance to initialize.initialize
in interface JobStore
SchedulerConfigException
public void pauseAll() throws JobPersistenceException
JobStore
pauseTriggerGroup(group)
on every group.
When resumeAll()
is called (to un-pause), trigger misfire
instructions WILL be applied.
pauseAll
in interface JobStore
JobPersistenceException
JobStore.resumeAll()
,
JobStore.pauseTriggers(GroupMatcher)
public void pauseJob(JobKey jobKey) throws JobPersistenceException
JobStore
Job
with the given name - by
pausing all of its current Trigger
s.pauseJob
in interface JobStore
JobPersistenceException
JobStore.resumeJob(JobKey)
public Collection<String> pauseJobs(GroupMatcher<JobKey> matcher) throws JobPersistenceException
JobStore
Job
s
in the given
group - by pausing all of their Trigger
s.
The JobStore should "remember" that the group is paused, and impose the pause on any new jobs that are added to the group while the group is paused.
pauseJobs
in interface JobStore
JobPersistenceException
JobStore.resumeJobs(GroupMatcher)
public void pauseTrigger(TriggerKey triggerKey) throws JobPersistenceException
JobStore
Trigger
with the given key.pauseTrigger
in interface JobStore
JobPersistenceException
JobStore.resumeTrigger(TriggerKey)
public Collection<String> pauseTriggers(GroupMatcher<TriggerKey> matcher) throws JobPersistenceException
JobStore
Trigger
s
in the
given group.
The JobStore should "remember" that the group is paused, and impose the pause on any new triggers that are added to the group while the group is paused.
pauseTriggers
in interface JobStore
JobPersistenceException
JobStore.resumeTriggers(GroupMatcher)
public void releaseAcquiredTrigger(OperableTrigger trigger)
JobStore
JobStore
that the scheduler no longer plans to
fire the given Trigger
, that it had previously acquired
(reserved).releaseAcquiredTrigger
in interface JobStore
public boolean removeCalendar(String calName) throws JobPersistenceException
JobStore
Calendar
with the
given name.
If removal of the Calendar
would result in
Trigger
s pointing to non-existent calendars, then a
JobPersistenceException
will be thrown.
removeCalendar
in interface JobStore
calName
- The name of the Calendar
to be removed.true
if a Calendar
with the given name
was found and removed from the store.JobPersistenceException
public boolean removeJob(JobKey jobKey) throws JobPersistenceException
JobStore
Job
with the given
key, and any Trigger
s that reference
it.
If removal of the Job
results in an empty group, the
group should be removed from the JobStore
's list of
known group names.
removeJob
in interface JobStore
true
if a Job
with the given name &
group was found and removed from the store.JobPersistenceException
public boolean removeTrigger(TriggerKey triggerKey) throws JobPersistenceException
JobStore
Trigger
with the
given key.
If removal of the Trigger
results in an empty group, the
group should be removed from the JobStore
's list of
known group names.
If removal of the Trigger
results in an 'orphaned' Job
that is not 'durable', then the Job
should be deleted
also.
removeTrigger
in interface JobStore
true
if a Trigger
with the given
name & group was found and removed from the store.JobPersistenceException
public boolean replaceTrigger(TriggerKey triggerKey, OperableTrigger newTrigger) throws JobPersistenceException
JobStore
Trigger
with the
given key, and store the new given one - which must be associated
with the same job.replaceTrigger
in interface JobStore
newTrigger
- The new Trigger
to be stored.true
if a Trigger
with the given
name & group was found and removed from the store.JobPersistenceException
public void resumeAll() throws JobPersistenceException
JobStore
resumeTriggerGroup(group)
on every group.
If any Trigger
missed one or more fire-times, then the
Trigger
's misfire instruction will be applied.
resumeAll
in interface JobStore
JobPersistenceException
JobStore.pauseAll()
public void resumeJob(JobKey jobKey) throws JobPersistenceException
JobStore
Job
with the
given key.
If any of the Job
'sTrigger
s missed one
or more fire-times, then the Trigger
's misfire
instruction will be applied.
resumeJob
in interface JobStore
JobPersistenceException
JobStore.pauseJob(JobKey)
public Collection<String> resumeJobs(GroupMatcher<JobKey> matcher) throws JobPersistenceException
JobStore
Job
s
in
the given group.
If any of the Job
s had Trigger
s that
missed one or more fire-times, then the Trigger
's
misfire instruction will be applied.
resumeJobs
in interface JobStore
JobPersistenceException
JobStore.pauseJobs(GroupMatcher)
public void resumeTrigger(TriggerKey triggerKey) throws JobPersistenceException
JobStore
Trigger
with the
given key.
If the Trigger
missed one or more fire-times, then the
Trigger
's misfire instruction will be applied.
resumeTrigger
in interface JobStore
JobPersistenceException
JobStore.pauseTrigger(TriggerKey)
public Collection<String> resumeTriggers(GroupMatcher<TriggerKey> matcher) throws JobPersistenceException
JobStore
Trigger
s
in the given group.
If any Trigger
missed one or more fire-times, then the
Trigger
's misfire instruction will be applied.
resumeTriggers
in interface JobStore
JobPersistenceException
JobStore.pauseTriggers(GroupMatcher)
public Calendar retrieveCalendar(String calName) throws JobPersistenceException
JobStore
Trigger
.retrieveCalendar
in interface JobStore
calName
- The name of the Calendar
to be retrieved.Calendar
, or null if there is no
match.JobPersistenceException
public JobDetail retrieveJob(JobKey jobKey) throws JobPersistenceException
JobStore
retrieveJob
in interface JobStore
Job
, or null if there is no match.JobPersistenceException
public OperableTrigger retrieveTrigger(TriggerKey triggerKey) throws JobPersistenceException
JobStore
Trigger
.retrieveTrigger
in interface JobStore
Trigger
, or null if there is no
match.JobPersistenceException
public void schedulerStarted() throws SchedulerException
JobStore
JobStore
that
the scheduler has started.schedulerStarted
in interface JobStore
SchedulerException
public void schedulerPaused()
JobStore
JobStore
that
the scheduler has been paused.schedulerPaused
in interface JobStore
public void schedulerResumed()
JobStore
JobStore
that
the scheduler has resumed after being paused.schedulerResumed
in interface JobStore
public void setInstanceId(String schedInstId)
JobStore
JobStore
of the Scheduler instance's Id,
prior to initialize being invoked.setInstanceId
in interface JobStore
public void setInstanceName(String schedName)
JobStore
JobStore
of the Scheduler instance's name,
prior to initialize being invoked.setInstanceName
in interface JobStore
public void setThreadPoolSize(int poolSize)
JobStore
setThreadPoolSize
in interface JobStore
poolSize
- amount of threads allocated for job executionpublic void shutdown()
JobStore
JobStore
that
it should free up all of it's resources because the scheduler is
shutting down.public void storeCalendar(String name, Calendar calendar, boolean replaceExisting, boolean updateTriggers) throws ObjectAlreadyExistsException, JobPersistenceException
JobStore
Calendar
.storeCalendar
in interface JobStore
calendar
- The Calendar
to be stored.replaceExisting
- If true
, any Calendar
existing
in the JobStore
with the same name & group
should be over-written.updateTriggers
- If true
, any Trigger
s existing
in the JobStore
that reference an existing
Calendar with the same name with have their next fire time
re-computed with the new Calendar
.ObjectAlreadyExistsException
- if a Calendar
with the same name already
exists, and replaceExisting is set to false.JobPersistenceException
public void storeJob(JobDetail newJob, boolean replaceExisting) throws ObjectAlreadyExistsException, JobPersistenceException
JobStore
JobDetail
.storeJob
in interface JobStore
newJob
- The JobDetail
to be stored.replaceExisting
- If true
, any Job
existing in the
JobStore
with the same name & group should be
over-written.ObjectAlreadyExistsException
- if a Job
with the same name/group already
exists, and replaceExisting is set to false.JobPersistenceException
public void storeJobAndTrigger(JobDetail newJob, OperableTrigger newTrigger) throws ObjectAlreadyExistsException, JobPersistenceException
JobStore
storeJobAndTrigger
in interface JobStore
newJob
- The JobDetail
to be stored.newTrigger
- The Trigger
to be stored.ObjectAlreadyExistsException
- if a Job
with the same name/group already
exists.JobPersistenceException
public void storeTrigger(OperableTrigger newTrigger, boolean replaceExisting) throws ObjectAlreadyExistsException, JobPersistenceException
JobStore
Trigger
.storeTrigger
in interface JobStore
newTrigger
- The Trigger
to be stored.replaceExisting
- If true
, any Trigger
existing in
the JobStore
with the same name & group should
be over-written.ObjectAlreadyExistsException
- if a Trigger
with the same name/group already
exists, and replaceExisting is set to false.JobPersistenceException
JobStore.pauseTriggers(org.quartz.impl.matchers.GroupMatcher)
public boolean supportsPersistence()
supportsPersistence
in interface JobStore
public void triggeredJobComplete(OperableTrigger trigger, JobDetail jobDetail, Trigger.CompletedExecutionInstruction instruction)
JobStore
JobStore
that the scheduler has completed the
firing of the given Trigger
(and the execution of its
associated Job
completed, threw an exception, or was vetoed),
and that the JobDataMap
in the given JobDetail
should be updated if the Job
is stateful.triggeredJobComplete
in interface JobStore
public List<TriggerFiredResult> triggersFired(List<OperableTrigger> triggers) throws JobPersistenceException
JobStore
JobStore
that the scheduler is now firing the
given Trigger
(executing its associated Job
),
that it had previously acquired (reserved).triggersFired
in interface JobStore
JobPersistenceException
public void setTcConfig(String tcConfig)
public void setTcConfigUrl(String tcConfigUrl)
public void setSynchronousWrite(String synchWrite)
public void setRejoin(String rejoin)
public long getEstimatedTimeToReleaseAndAcquireTrigger()
JobStore
JobStore
implementation
estimates that it will take to release a trigger and acquire a new one.getEstimatedTimeToReleaseAndAcquireTrigger
in interface JobStore
public void setEstimatedTimeToReleaseAndAcquireTrigger(long estimate)
public boolean isClustered()
JobStore
JobStore
implementation is clustered.isClustered
in interface JobStore
public boolean checkExists(JobKey jobKey) throws JobPersistenceException
JobStore
Job
with the given identifier already
exists within the scheduler.checkExists
in interface JobStore
jobKey
- the identifier to check forJobPersistenceException
public boolean checkExists(TriggerKey triggerKey) throws JobPersistenceException
JobStore
Trigger
with the given identifier already
exists within the scheduler.checkExists
in interface JobStore
triggerKey
- the identifier to check forJobPersistenceException
public void clearAllSchedulingData() throws JobPersistenceException
JobStore
clearAllSchedulingData
in interface JobStore
JobPersistenceException
public boolean removeTriggers(List<TriggerKey> arg0) throws JobPersistenceException
removeTriggers
in interface JobStore
JobPersistenceException
public boolean removeJobs(List<JobKey> arg0) throws JobPersistenceException
removeJobs
in interface JobStore
JobPersistenceException
public void storeJobsAndTriggers(Map<JobDetail,Set<? extends Trigger>> arg0, boolean arg1) throws ObjectAlreadyExistsException, JobPersistenceException
storeJobsAndTriggers
in interface JobStore
ObjectAlreadyExistsException
JobPersistenceException
public long getAcquireRetryDelay(int failureCount)
JobStore
JobStore.acquireNextTriggers(long, int, long)
fail more than once in succession, and the
thread thus wants to wait a bit before trying again, to not consume
100% CPU, write huge amounts of errors into logs, etc. in cases like
the DB being offline/restarting.
The delay returned by implementations should be between 20 and
600000 milliseconds.getAcquireRetryDelay
in interface JobStore
failureCount
- the number of successive failures seen so farprotected TerracottaJobStoreExtensions getRealJobStore()
Copyright 2001-2019, Terracotta, Inc.