tasks

package
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 1, 2024 License: GPL-3.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	PlanForUnassociatedOperations = "_unassociated_"
	PlanForSystemTasks            = "_system_" // plan for system tasks e.g. garbage collection, prune, stats, etc.

	TaskPriorityStats          = 0
	TaskPriorityDefault        = 1 << 1 // default priority
	TaskPriorityForget         = 1 << 2
	TaskPriorityIndexSnapshots = 1 << 3
	TaskPriorityCheck          = 1 << 4 // check should always run after prune.
	TaskPriorityPrune          = 1 << 5
	TaskPriorityInteractive    = 1 << 6 // highest priority
)

Variables

View Source
var NeverScheduledTask = ScheduledTask{}

Functions

func FlowIDForSnapshotID

func FlowIDForSnapshotID(log *oplog.OpLog, snapshotID string) (int64, error)

FlowIDForSnapshotID returns the flow ID associated with the backup task that created snapshot ID or 0 if not found.

Types

type BackupTask

type BackupTask struct {
	BaseTask
	// contains filtered or unexported fields
}

BackupTask is a scheduled backup operation.

func NewOneoffBackupTask

func NewOneoffBackupTask(plan *v1.Plan, at time.Time) *BackupTask

func NewScheduledBackupTask

func NewScheduledBackupTask(plan *v1.Plan) (*BackupTask, error)

func (*BackupTask) Next

func (t *BackupTask) Next(now time.Time, runner TaskRunner) (ScheduledTask, error)

func (*BackupTask) Run

func (t *BackupTask) Run(ctx context.Context, st ScheduledTask, runner TaskRunner) error

type BaseTask

type BaseTask struct {
	TaskName   string
	TaskPlanID string
	TaskRepoID string
}

func (BaseTask) Name

func (b BaseTask) Name() string

func (BaseTask) PlanID

func (b BaseTask) PlanID() string

func (BaseTask) RepoID

func (b BaseTask) RepoID() string

type CheckTask added in v1.1.0

type CheckTask struct {
	BaseTask
	// contains filtered or unexported fields
}

func (*CheckTask) Next added in v1.1.0

func (t *CheckTask) Next(now time.Time, runner TaskRunner) (ScheduledTask, error)

func (*CheckTask) Run added in v1.1.0

func (t *CheckTask) Run(ctx context.Context, st ScheduledTask, runner TaskRunner) error

type CollectGarbageTask

type CollectGarbageTask struct {
	BaseTask
	// contains filtered or unexported fields
}

func NewCollectGarbageTask

func NewCollectGarbageTask() *CollectGarbageTask

func (*CollectGarbageTask) Cancel

func (t *CollectGarbageTask) Cancel(withStatus v1.OperationStatus) error

func (*CollectGarbageTask) Next

func (t *CollectGarbageTask) Next(now time.Time, runner TaskRunner) (ScheduledTask, error)

func (*CollectGarbageTask) OperationId

func (t *CollectGarbageTask) OperationId() int64

func (*CollectGarbageTask) Run

type GenericOneoffTask

type GenericOneoffTask struct {
	BaseTask
	OneoffTask
	Do func(ctx context.Context, st ScheduledTask, runner TaskRunner) error
}

func (*GenericOneoffTask) Run

type OneoffTask

type OneoffTask struct {
	BaseTask
	RunAt       time.Time
	FlowID      int64 // the ID of the flow this task is associated with.
	DidSchedule bool
	ProtoOp     *v1.Operation // the prototype operation for this class of task.
}

func (*OneoffTask) Next

func (o *OneoffTask) Next(now time.Time, runner TaskRunner) (ScheduledTask, error)

type PruneTask

type PruneTask struct {
	BaseTask
	// contains filtered or unexported fields
}

func (*PruneTask) Next

func (t *PruneTask) Next(now time.Time, runner TaskRunner) (ScheduledTask, error)

func (*PruneTask) Run

func (t *PruneTask) Run(ctx context.Context, st ScheduledTask, runner TaskRunner) error

type ScheduledTask

type ScheduledTask struct {
	Task  Task          // the task to run
	RunAt time.Time     // the time at which the task should be run.
	Op    *v1.Operation // operation associated with this execution of the task.
}

ScheduledTask is a task that is scheduled to run at a specific time.

func (ScheduledTask) Eq

func (s ScheduledTask) Eq(other ScheduledTask) bool

func (ScheduledTask) Less

func (s ScheduledTask) Less(other ScheduledTask) bool

type StatsTask

type StatsTask struct {
	BaseTask
	// contains filtered or unexported fields
}

func (*StatsTask) Next

func (t *StatsTask) Next(now time.Time, runner TaskRunner) (ScheduledTask, error)

func (*StatsTask) Run

func (t *StatsTask) Run(ctx context.Context, st ScheduledTask, runner TaskRunner) error

type Task

type Task interface {
	Name() string                                                       // human readable name for this task.
	Next(now time.Time, runner TaskRunner) (ScheduledTask, error)       // returns the next scheduled task.
	Run(ctx context.Context, st ScheduledTask, runner TaskRunner) error // run the task.
	PlanID() string                                                     // the ID of the plan this task is associated with.
	RepoID() string                                                     // the ID of the repo this task is associated with.
}

Task is a task that can be scheduled to run at a specific time.

func NewCheckTask added in v1.1.0

func NewCheckTask(repoID, planID string, force bool) Task

func NewOneoffForgetSnapshotTask

func NewOneoffForgetSnapshotTask(repoID, planID string, flowID int64, at time.Time, snapshotID string) Task

func NewOneoffForgetTask

func NewOneoffForgetTask(repoID, planID string, flowID int64, at time.Time) Task

func NewOneoffIndexSnapshotsTask

func NewOneoffIndexSnapshotsTask(repoID string, at time.Time) Task

func NewOneoffRestoreTask

func NewOneoffRestoreTask(repoID, planID string, flowID int64, at time.Time, snapshotID, path, target string) Task

func NewPruneTask

func NewPruneTask(repoID, planID string, force bool) Task

func NewStatsTask

func NewStatsTask(repoID, planID string, force bool) Task

type TaskRunner

type TaskRunner interface {
	// CreateOperation creates the operation in storage and sets the operation ID in the task.
	CreateOperation(*v1.Operation) error
	// UpdateOperation updates the operation in storage. It must be called after CreateOperation.
	UpdateOperation(*v1.Operation) error
	// ExecuteHooks
	ExecuteHooks(events []v1.Hook_Condition, vars hook.HookVars) error
	// OpLog returns the oplog for the operations.
	OpLog() *oplog.OpLog
	// GetRepo returns the repo with the given ID.
	GetRepo(repoID string) (*v1.Repo, error)
	// GetPlan returns the plan with the given ID.
	GetPlan(planID string) (*v1.Plan, error)
	// GetRepoOrchestrator returns the orchestrator for the repo with the given ID.
	GetRepoOrchestrator(repoID string) (*repo.RepoOrchestrator, error)
	// ScheduleTask schedules a task to run at a specific time.
	ScheduleTask(task Task, priority int) error
	// Config returns the current config.
	Config() *v1.Config
	// Logger returns the logger.
	Logger(ctx context.Context) *zap.Logger
}

TaskRunner is an interface for running tasks. It is used by tasks to create operations and write logs.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL