scheduledtask

package
v0.424.2 Latest Latest
Warning

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

Go to latest
Published: Jan 15, 2025 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Overview

Package scheduledtask implements a task scheduler.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Job

type Job func(ctx context.Context) (time.Duration, error)

A Job is a function that is scheduled to run periodically.

The Job itself controls its schedule by returning the next time it should run.

type Scheduler

type Scheduler struct {
	// contains filtered or unexported fields
}

Scheduler is a task scheduler for the controller.

Each job runs in its own goroutine.

The scheduler uses a consistent hash ring to attempt to ensure that jobs are only run on a single controller at a time. This is not guaranteed, however, as the hash ring is only updated periodically and controllers may have inconsistent views of the hash ring.

func New

func New(ctx context.Context, id key.Controller, leaser leases.Leaser) *Scheduler

New creates a new Scheduler.

func NewForTesting

func NewForTesting(ctx context.Context, id key.Controller, clock clock.Clock, leaser leases.Leaser) *Scheduler

func (*Scheduler) Parallel

func (s *Scheduler) Parallel(name string, retry backoff.Backoff, job Job)

Parallel schedules a job to run on every controller.

func (*Scheduler) Singleton

func (s *Scheduler) Singleton(name string, retry backoff.Backoff, job Job)

Singleton schedules a job to attempt to run on only a single controller.

This is not guaranteed, however, as controllers may have inconsistent views of the hash ring.

Jump to

Keyboard shortcuts

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