Task Dependencies
Last updated
This page explains how a task waits on prerequisites and what happens when a prerequisite fails.
Declaring Prerequisites
prepareID, err := c.Add("@every 1m", prepare, "prepare")
if err != nil {
log.Fatal(err)
}
_, err = c.Add("@every 1m", process, "process", []core.Wait{
{ID: prepareID, State: core.Skip},
})
if err != nil {
log.Fatal(err)
}
The dependent task's action must be func() error; Add rejects func() combined with prerequisites.
Evaluation Rules
When a dependent task fires, it enters the wait queue and a worker checks prerequisite states every 1ms:
| Prerequisite state | State: core.Stop |
State: core.Skip |
|---|---|---|
TaskCompleted |
Satisfied | Satisfied |
TaskFailed |
Dependent task marked TaskFailed |
Prerequisite ignored |
TaskPending / TaskRunning |
Keep waiting | Keep waiting |
| ID missing | Dependent task marked TaskFailed |
Dependent task marked TaskFailed |
- The wait limit is fixed at 1 minute;
Wait.Delayis currently not applied - Evaluation uses each prerequisite's current state, not a run in the same trigger cycle
- Prerequisites registered with
func()areTaskCompletedfrom the moment they are added
See Dependency API for the Wait and WaitState types.