Timer Schedules
Globus Timers support two types of timer schedules:
-
Run-once: The timer will run only once, at the specified start time.
-
Recurring: The timer will run at regular intervals, starting at the specified start time.
A timer provides a number of scheduling options, including:
-
Start: The time at which the timer will first run; when omitted, defaults to the current time (i.e., the first run will begin immediately)
-
End conditions: The conditions under which the timer will stop running
-
Iterations: The timer will stop after a specified number of iterations (this does not include iterations that were skipped, such as while the timer was inactive). See "Timer Statuses" below for more information.
-
Time: The timer will stop after a specified time.
-
-
Interval: The time between successive runs of the timer (this is not set in the case of "run-once" timers)
When Timer Runs Will Occur
Globus Timers determines when your timer is eligible to run using the timer's start time and its interval. Each time your timer is eligible to run, it is called a "timer tick". Ticks occur on the following pattern:
-
Tick 1: At the timer's start time
-
Tick 2: At the timer's start time + interval
-
Tick n+1: At the timer's start time + (n * interval)
-
… (until the end condition is met)
"Run-once" timers (i.e., timers without a configured interval) will only have one tick, at the start time.
If a prior timer run is still in progress when the next timer tick occurs, it will be skipped. A skipped tick will not count towards a timer's "iterations" end condition.
Retries
In some cases, a timer may encounter errors when attempting to start a new timer run.
-
In the case that the timer encounters an error that could be transient (e.g., network error, timeout, etc.), the timer may retry the timer run for up to 45 minutes. Recurring timers with an interval of two minutes or longer will retry for up to half of the timer’s interval (but no more than 45 minutes); for example, if the timer has an interval of 30 minutes, it will retry for up to 15 minutes. Run-once timers will retry for 45 minutes.
-
In the case that the timer encounters an error that requires user intervention to resolve (for example, additional consents are needed), the timer will be paused and the owner will be notified. See below for additional details on resuming inactive timers.
-
If the error encountered is not resolvable (e.g., an HTTP 404 error, indicating that the timer's configured target is not found), the timer will be ended and the owner will be notified.
Timer Statuses
A timer can be in one of four states:
-
active
: The timer is running and will run again at the next scheduled time. -
inactive
: The timer is not running and will not run again until it is resumed.-
This can occur automatically when the timer is missing a necessary consent, or when a new login is required to re-authorize the timer. In these cases, the timer will be paused and the owner will be notified via email.
-
A timer can also be made inactive manually, when the owner pauses the timer.
-
-
ended
: The timer has reached its end conditions and will not run again. -
delete_in_progress
: The timer is in the process of being deleted; once it has cleaned up all of its resources, it will no longer appear in your list of timers.
Pausing and Resuming Timers
When a timer becomes inactive, an email will be sent to the owner with instructions indicating how to resume the timer.
Timers may also be made inactive manually, by the owner, by pausing the timer. A timer can be paused at any time, and will not run again until it is resumed. Pausing a timer will not affect a timer run that is already in progress. If a paused timer has an associated inactive timer run (such as when a necessary consent is missing, or when a new login is required to re-authorize the timer), resuming the timer will also resume the inactive timer run.
To pause a timer in the Globus Web App, click the "Pause" button in the timer details page.
To pause a timer in the Globus CLI, run the command:
globus timer pause <timer-id>
…where <timer-id>
is the ID of the timer you wish to pause.
A timer can similarly be resumed in the Globus CLI by running the command:
globus timer resume <timer-id>
…where <timer-id>
is the ID of the timer you wish to resume.