v1.2.1

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

See Dependency API for the Wait and WaitState types.

中文