Documentation
¶
Overview ¶
Package scheduler defines code-based schedules and distributed execution.
Index ¶
- Constants
- Variables
- type Clock
- type Condition
- type Context
- type Event
- type EventType
- type Executor
- type Hook
- type Hooks
- type Interval
- func At(at string) Interval
- func Cron(expression string) Interval
- func Daily() Interval
- func DailyAt(at string) Interval
- func DaysOfMonth(days ...int) Interval
- func EveryFifteenMinutes() Interval
- func EveryFifteenSeconds() Interval
- func EveryFiveMinutes() Interval
- func EveryFiveSeconds() Interval
- func EveryFourHours(minutes ...int) Interval
- func EveryFourMinutes() Interval
- func EveryMinute() Interval
- func EveryOddHour(minutes ...int) Interval
- func EverySecond() Interval
- func EverySixHours(minutes ...int) Interval
- func EveryTenMinutes() Interval
- func EveryTenSeconds() Interval
- func EveryThirtyMinutes() Interval
- func EveryThirtySeconds() Interval
- func EveryThreeHours(minutes ...int) Interval
- func EveryThreeMinutes() Interval
- func EveryTwentySeconds() Interval
- func EveryTwoHours(minutes ...int) Interval
- func EveryTwoMinutes() Interval
- func EveryTwoSeconds() Interval
- func Hourly() Interval
- func HourlyAt(minute int) Interval
- func LastDayOfMonth(at string) Interval
- func Monthly() Interval
- func MonthlyOn(day int, at string) Interval
- func Quarterly() Interval
- func QuarterlyOn(day int, at string) Interval
- func TwiceDaily(firstHour, secondHour int) Interval
- func TwiceDailyAt(firstHour, secondHour, minute int) Interval
- func TwiceMonthly(firstDay, secondDay int, at string) Interval
- func Weekly() Interval
- func WeeklyOn(day time.Weekday, at string) Interval
- func Yearly() Interval
- func YearlyOn(month time.Month, day int, at string) Interval
- type MaintenancePolicy
- type MissedRunPolicy
- type Observer
- type ObserverFunc
- type Occurrence
- type Option
- func EvenWhenPaused() Option
- func OnOneServer() Option
- func RunInBackground() Option
- func WithBetween(start, end string) Option
- func WithCondition(condition Condition) Option
- func WithDateBounds(start, end time.Time) Option
- func WithDays(days ...time.Weekday) Option
- func WithEnabled(enabled bool) Option
- func WithEnvironments(environments ...string) Option
- func WithFridays() Option
- func WithHooks(hooks Hooks) Option
- func WithJitter(jitter time.Duration) Option
- func WithMaintenancePolicy(policy MaintenancePolicy) Option
- func WithMetadata(metadata map[string]string) Option
- func WithMissedRuns(policy MissedRunPolicy, maxCatchUp int) Option
- func WithMondays() Option
- func WithOneServer(ttl time.Duration) Option
- func WithOverlap(policy OverlapPolicy) Option
- func WithParameters(parameters map[string]any) Option
- func WithRunTimeout(timeout time.Duration) Option
- func WithSaturdays() Option
- func WithSkip(skip Condition) Option
- func WithSundays() Option
- func WithThursdays() Option
- func WithTimezone(timezone string) Option
- func WithTuesdays() Option
- func WithUnlessBetween(start, end string) Option
- func WithVersion(version string) Option
- func WithWednesdays() Option
- func WithWeekdays() Option
- func WithWeekends() Option
- func WithoutOverlap(policy OverlapPolicy, ttl time.Duration) Option
- func WithoutOverlapping(minutes ...int) Option
- type OverlapPolicy
- type PauseController
- type PauseSource
- type PauseState
- type Registry
- func (registry *Registry) ClearCache(ctx context.Context, store lease.Store) (int, error)
- func (registry *Registry) Due(name string, after, through time.Time) ([]Occurrence, error)
- func (registry *Registry) Next(name string, after time.Time) (time.Time, error)
- func (registry *Registry) Overview(after time.Time) []ScheduleOverview
- func (registry *Registry) Schedules() []Schedule
- type Result
- type Runner
- type RunnerOption
- func WithCallbackTimeout(timeout time.Duration) RunnerOption
- func WithClock(clock Clock) RunnerOption
- func WithEnvironment(environment string) RunnerOption
- func WithHeartbeatInterval(interval time.Duration) RunnerOption
- func WithLeaseOperationTimeout(timeout time.Duration) RunnerOption
- func WithMaintenanceMode(enabled bool) RunnerOption
- func WithMaxConcurrentCallbacks(limit int) RunnerOption
- func WithMaxConcurrentExecutions(limit int) RunnerOption
- func WithObserver(observer Observer) RunnerOption
- func WithOwner(owner string) RunnerOption
- func WithPauseSource(source PauseSource) RunnerOption
- type Schedule
- type ScheduleOverview
- type TimeWindow
Constants ¶
const ( // DefaultOverlapTTL matches Laravel's default 1,440-minute event mutex. DefaultOverlapTTL = 24 * time.Hour // DefaultOneServerTTL matches Laravel's one-hour scheduling mutex. DefaultOneServerTTL = time.Hour // MaxJitter is the largest allowed deterministic schedule offset. MaxJitter = 24 * time.Hour // MaxIdentityBytes bounds schedule identity component strings. MaxIdentityBytes = 255 // MaxExpressionBytes bounds a cron expression before parser invocation. MaxExpressionBytes = 1_024 // MaxParameterBytes bounds the JSON-encoded task parameter payload. MaxParameterBytes = 64 << 10 // MaxMetadataEntries bounds diagnostic metadata cardinality. MaxMetadataEntries = 128 // MaxMetadataBytes bounds combined metadata key and value bytes. MaxMetadataBytes = 64 << 10 // MaxEnvironments bounds environment filters per schedule. MaxEnvironments = 64 // MaxConditions bounds trusted application conditions per schedule. MaxConditions = 32 // MaxTimeWindows bounds recurring time constraints per schedule. MaxTimeWindows = 32 // MaxCatchUp bounds retained delayed occurrences per decision. MaxCatchUp = 1_000 // MaxSchedules bounds registry size before compilation. MaxSchedules = 10_000 )
const DefaultCallbackTimeout = time.Second
DefaultCallbackTimeout bounds conditions, hooks, and observers.
const DefaultLeaseOperationTimeout = 5 * time.Second
DefaultLeaseOperationTimeout bounds each distributed lease backend call.
const DefaultMaxConcurrentCallbacks = 128
DefaultMaxConcurrentCallbacks bounds active and timed-out callbacks.
const DefaultMaxConcurrentExecutions = 128
DefaultMaxConcurrentExecutions bounds managed in-process executions.
const MaxObservers = 128
MaxObservers bounds lifecycle observer registration per runner.
const MaxOccurrenceScan = 10_000
MaxOccurrenceScan bounds candidates inspected by one Due call.
Variables ¶
var ( // ErrInvalidExpression reports a schedule with invalid cron syntax. ErrInvalidExpression = errors.New("scheduler: invalid cron expression") // ErrInvalidTimezone reports a schedule with an unavailable IANA zone. ErrInvalidTimezone = errors.New("scheduler: invalid timezone") // ErrDuplicateSchedule reports repeated schedule names at compilation. ErrDuplicateSchedule = errors.New("scheduler: duplicate schedule") // ErrScheduleNotFound reports an unknown registry schedule name. ErrScheduleNotFound = errors.New("scheduler: schedule not found") // ErrOccurrenceLimit reports a due scan beyond its global candidate cap. ErrOccurrenceLimit = errors.New("scheduler: occurrence scan limit exceeded") )
var ( // ErrInvalidRunner reports missing or incompatible runner dependencies. ErrInvalidRunner = errors.New("scheduler: invalid runner dependencies") // ErrTaskPanic reports a recovered condition or executor panic. ErrTaskPanic = errors.New("scheduler: task panicked") // ErrDraining reports a new tick attempted after drain began. ErrDraining = errors.New("scheduler: runner is draining") // ErrUnsupportedHeartbeat reports a store unsafe for overlap leases. ErrUnsupportedHeartbeat = errors.New("scheduler: lease heartbeat is unsupported") // ErrUnsupportedOverlap reports unavailable safe replacement semantics. ErrUnsupportedOverlap = errors.New("scheduler: overlap replacement is unsupported") // ErrExecutionCapacity reports that the bounded executor pool is full. ErrExecutionCapacity = errors.New("scheduler: execution capacity exhausted") // ErrCallbackTimeout reports a condition or lifecycle callback deadline. ErrCallbackTimeout = errors.New("scheduler: callback timed out") // ErrCallbackCapacity reports that the bounded callback pool is full. ErrCallbackCapacity = errors.New("scheduler: callback capacity exhausted") // ErrPaused reports an occurrence skipped by application pause state. ErrPaused = errors.New("scheduler: paused") )
var ( // ErrScheduleNameRequired reports a blank schedule name. ErrScheduleNameRequired = errors.New("scheduler: schedule name is required") // ErrTaskNameRequired reports a blank task identity. ErrTaskNameRequired = errors.New("scheduler: task name is required") // ErrInvalidMissedRuns reports an invalid missed-run policy or bound. ErrInvalidMissedRuns = errors.New("scheduler: invalid missed-run policy") // ErrInvalidDateBounds reports an end instant before its start instant. ErrInvalidDateBounds = errors.New("scheduler: invalid date bounds") // ErrInvalidDuration reports a non-positive duration option. ErrInvalidDuration = errors.New("scheduler: duration must be positive") // ErrInvalidVersion reports a blank schedule version. ErrInvalidVersion = errors.New("scheduler: version is required") // ErrResourceLimit reports a definition beyond an exported safety budget. ErrResourceLimit = errors.New("scheduler: resource limit exceeded") // ErrInvalidConstraint reports an invalid recurring schedule constraint. ErrInvalidConstraint = errors.New("scheduler: invalid schedule constraint") )
Functions ¶
This section is empty.
Types ¶
type Context ¶
type Context struct {
Schedule Schedule
Now time.Time
Due time.Time
Attempt int
Owner string
Fencing uint64
IdempotencyKey string
Metadata map[string]string
}
Context carries immutable schedule and ownership data to an Executor.
type Event ¶
type Event struct {
Type EventType
Result Result
Occurrence Occurrence
Context context.Context
Owner string
Fencing uint64
At time.Time
Err error
Background bool
}
Event carries a bounded, structured scheduler lifecycle record.
type EventType ¶
type EventType uint8
EventType identifies a scheduler lifecycle boundary.
const ( // EventBefore is emitted immediately before execution. EventBefore EventType = iota // EventSuccess is emitted after successful execution. EventSuccess // EventFailure is emitted after a failed decision or execution. EventFailure // EventSkipped is emitted for a policy-based skip. EventSkipped // EventOverlap is emitted when an active overlap lease prevents execution. EventOverlap // EventCompleted terminates every emitted lifecycle. EventCompleted // EventFinished is emitted after a started executor returns. EventFinished )
type Hooks ¶
type Hooks struct {
Before Hook
Success Hook
Failure Hook
Skipped Hook
Overlap Hook
Completed Hook
After Hook
}
Hooks configures optional callbacks for each lifecycle boundary.
type Interval ¶
type Interval struct {
// contains filtered or unexported fields
}
Interval contains the explicit cron expression used by a schedule.
func Cron ¶
Cron constructs an interval from a five-field expression, an optional leading seconds field, an L day-of-month value, or a supported descriptor.
func DaysOfMonth ¶
DaysOfMonth returns a midnight interval on each requested day of the month.
func EveryFifteenMinutes ¶
func EveryFifteenMinutes() Interval
EveryFifteenMinutes returns an interval aligned to every minute divisible by fifteen.
func EveryFifteenSeconds ¶
func EveryFifteenSeconds() Interval
EveryFifteenSeconds returns an interval aligned to every second divisible by fifteen.
func EveryFiveMinutes ¶
func EveryFiveMinutes() Interval
EveryFiveMinutes returns an interval aligned to every minute divisible by five.
func EveryFiveSeconds ¶
func EveryFiveSeconds() Interval
EveryFiveSeconds returns an interval aligned to every second divisible by five.
func EveryFourHours ¶
EveryFourHours returns a four-hour interval at minute zero or the optional minute.
func EveryFourMinutes ¶
func EveryFourMinutes() Interval
EveryFourMinutes returns an interval aligned to every minute divisible by four.
func EveryMinute ¶
func EveryMinute() Interval
EveryMinute returns the explicit every-minute cron interval.
func EveryOddHour ¶
EveryOddHour returns an odd-hour interval at minute zero or the optional minute.
func EverySecond ¶
func EverySecond() Interval
EverySecond returns an interval aligned to every wall-clock second.
func EverySixHours ¶
EverySixHours returns a six-hour interval at minute zero or the optional minute.
func EveryTenMinutes ¶
func EveryTenMinutes() Interval
EveryTenMinutes returns an interval aligned to every minute divisible by ten.
func EveryTenSeconds ¶
func EveryTenSeconds() Interval
EveryTenSeconds returns an interval aligned to every second divisible by ten.
func EveryThirtyMinutes ¶
func EveryThirtyMinutes() Interval
EveryThirtyMinutes returns an interval aligned to every minute divisible by thirty.
func EveryThirtySeconds ¶
func EveryThirtySeconds() Interval
EveryThirtySeconds returns an interval aligned to every second divisible by thirty.
func EveryThreeHours ¶
EveryThreeHours returns a three-hour interval at minute zero or the optional minute.
func EveryThreeMinutes ¶
func EveryThreeMinutes() Interval
EveryThreeMinutes returns an interval aligned to every minute divisible by three.
func EveryTwentySeconds ¶
func EveryTwentySeconds() Interval
EveryTwentySeconds returns an interval aligned to every second divisible by twenty.
func EveryTwoHours ¶
EveryTwoHours returns a two-hour interval at minute zero or the optional minute.
func EveryTwoMinutes ¶
func EveryTwoMinutes() Interval
EveryTwoMinutes returns an interval aligned to every minute divisible by two.
func EveryTwoSeconds ¶
func EveryTwoSeconds() Interval
EveryTwoSeconds returns an interval aligned to every second divisible by two.
func LastDayOfMonth ¶
LastDayOfMonth returns a monthly interval on the last day at the local HH:MM time.
func Monthly ¶
func Monthly() Interval
Monthly returns the explicit first-day-at-midnight cron interval.
func Quarterly ¶
func Quarterly() Interval
Quarterly returns a midnight interval on the first day of each quarter.
func QuarterlyOn ¶
QuarterlyOn returns an interval on day of each quarter at the local HH:MM time.
func TwiceDaily ¶
TwiceDaily returns a daily interval at both hours on minute zero.
func TwiceDailyAt ¶
TwiceDailyAt returns a daily interval at both hours on minute.
func TwiceMonthly ¶
TwiceMonthly returns a monthly interval on both days at the local HH:MM time.
func Yearly ¶
func Yearly() Interval
Yearly returns a midnight interval on the first day of each year.
func (Interval) Expression ¶
Expression returns the exact cron expression represented by the interval.
type MaintenancePolicy ¶
type MaintenancePolicy uint8
MaintenancePolicy controls execution while application maintenance is active.
const ( // MaintenanceSkip suppresses execution during maintenance. MaintenanceSkip MaintenancePolicy = iota // MaintenanceRun allows execution during maintenance. MaintenanceRun )
type MissedRunPolicy ¶
type MissedRunPolicy uint8
MissedRunPolicy controls decisions after one or more delayed boundaries.
const ( // MissedRunSkip executes only a boundary observed exactly on time. MissedRunSkip MissedRunPolicy = iota // MissedRunOnce executes only the newest missed boundary. MissedRunOnce // MissedRunCatchUp executes a bounded tail of missed boundaries. MissedRunCatchUp )
type Observer ¶
type Observer interface {
Observe(Event)
}
Observer consumes scheduler lifecycle events.
type ObserverFunc ¶
type ObserverFunc func(Event)
ObserverFunc adapts a function to Observer.
func (ObserverFunc) Observe ¶
func (observe ObserverFunc) Observe(event Event)
Observe invokes the adapted observer function.
type Occurrence ¶
type Occurrence struct {
ScheduleID string `json:"schedule_id"`
ScheduleName string `json:"schedule_name"`
Task string `json:"task"`
ScheduledAt time.Time `json:"scheduled_at"`
Attempt int `json:"attempt"`
IdempotencyKey string `json:"idempotency_key"`
}
Occurrence is one deterministic physical schedule boundary.
type Option ¶
Option configures a schedule before final validation and identity hashing.
func EvenWhenPaused ¶
func EvenWhenPaused() Option
EvenWhenPaused allows this schedule to run while its runner is paused.
func OnOneServer ¶
func OnOneServer() Option
OnOneServer enables a distributed occurrence lease with the default mutex TTL.
func RunInBackground ¶
func RunInBackground() Option
RunInBackground allows the runner to continue starting other due tasks while this task executes. Drain still waits for the managed execution to finish; asynchronous results are reported through lifecycle hooks and observers.
func WithBetween ¶
WithBetween restricts occurrences to an inclusive recurring local-time window.
func WithCondition ¶
WithCondition appends a non-nil trusted application condition.
func WithDateBounds ¶
WithDateBounds limits occurrences to inclusive start and end instants.
func WithEnabled ¶
WithEnabled controls whether the compiled schedule produces occurrences.
func WithEnvironments ¶
WithEnvironments restricts execution to named application environments.
func WithJitter ¶
WithJitter sets the maximum deterministic per-schedule offset.
func WithMaintenancePolicy ¶
func WithMaintenancePolicy(policy MaintenancePolicy) Option
WithMaintenancePolicy controls execution during application maintenance.
func WithMetadata ¶
WithMetadata copies bounded diagnostic metadata into the schedule.
func WithMissedRuns ¶
func WithMissedRuns(policy MissedRunPolicy, maxCatchUp int) Option
WithMissedRuns sets delayed-boundary behavior and its catch-up cap.
func WithOneServer ¶
WithOneServer enables a distributed occurrence lease with the given TTL.
func WithOverlap ¶
func WithOverlap(policy OverlapPolicy) Option
WithOverlap records overlap policy without enabling a task lease.
func WithParameters ¶
WithParameters copies JSON-compatible task parameters into the schedule.
func WithRunTimeout ¶
WithRunTimeout sets the execution deadline observed by the runner.
func WithTimezone ¶
WithTimezone sets the schedule's explicit IANA time-zone name.
func WithUnlessBetween ¶
WithUnlessBetween excludes occurrences in an inclusive recurring local-time window.
func WithVersion ¶
WithVersion sets the semantic version included in schedule identity.
func WithWednesdays ¶
func WithWednesdays() Option
WithWednesdays restricts occurrences to Wednesday.
func WithWeekdays ¶
func WithWeekdays() Option
WithWeekdays restricts occurrences to Monday through Friday.
func WithWeekends ¶
func WithWeekends() Option
WithWeekends restricts occurrences to Saturday and Sunday.
func WithoutOverlap ¶
func WithoutOverlap(policy OverlapPolicy, ttl time.Duration) Option
WithoutOverlap enables a renewable task lease and overlap policy.
func WithoutOverlapping ¶
WithoutOverlapping skips an overlapping occurrence. The optional expiration is expressed in minutes and defaults to Laravel's 1,440-minute mutex TTL.
type OverlapPolicy ¶
type OverlapPolicy uint8
OverlapPolicy controls a decision when the task lease is already held.
const ( // OverlapAllow permits concurrent execution and does not acquire a task lease. OverlapAllow OverlapPolicy = iota // OverlapSkip skips an occurrence while its task lease is held. OverlapSkip // OverlapReplace delegates safe cancellation and transfer to a replacement store. OverlapReplace )
type PauseController ¶
PauseController idempotently changes an application's scheduler pause state.
type PauseSource ¶
PauseSource reports whether ordinary schedules should be paused.
type PauseState ¶
type PauseState struct {
// contains filtered or unexported fields
}
PauseState is a process-local, concurrency-safe pause source and controller. Distributed runners should use an application-owned shared persistent implementation of PauseSource and PauseController instead.
func NewPauseState ¶
func NewPauseState() *PauseState
NewPauseState constructs an initially resumed process-local pause state.
func (*PauseState) Pause ¶
func (state *PauseState) Pause(ctx context.Context) error
Pause idempotently pauses ordinary schedules.
type Registry ¶
type Registry struct {
// contains filtered or unexported fields
}
Registry is an immutable compiled set of named schedules.
func (*Registry) ClearCache ¶
ClearCache removes every currently observed task lease for schedules using overlap prevention. Each removal is fenced by the token returned by Inspect. Callers must first isolate active owners because lease removal cannot stop unfenced side effects already in progress.
func (*Registry) Overview ¶
func (registry *Registry) Overview(after time.Time) []ScheduleOverview
Overview returns immutable schedule definitions and their next boundaries, sorted by schedule name. Callers supply the reference instant so inspection remains deterministic and can be exposed through any application surface.
type Runner ¶
type Runner struct {
// contains filtered or unexported fields
}
Runner calculates due occurrences and coordinates their fenced execution.
func NewRunner ¶
func NewRunner(registry *Registry, leases lease.Store, executor Executor, options ...RunnerOption) (*Runner, error)
NewRunner validates dependencies and distributed safety capabilities.
type RunnerOption ¶
RunnerOption configures a Runner during construction.
func WithCallbackTimeout ¶
func WithCallbackTimeout(timeout time.Duration) RunnerOption
WithCallbackTimeout bounds individual conditions, hooks, and observers.
func WithClock ¶
func WithClock(clock Clock) RunnerOption
WithClock replaces wall time with an injectable scheduler clock.
func WithEnvironment ¶
func WithEnvironment(environment string) RunnerOption
WithEnvironment selects schedules allowed in an application environment.
func WithHeartbeatInterval ¶
func WithHeartbeatInterval(interval time.Duration) RunnerOption
WithHeartbeatInterval sets the renewal cadence for active task leases.
func WithLeaseOperationTimeout ¶
func WithLeaseOperationTimeout(timeout time.Duration) RunnerOption
WithLeaseOperationTimeout bounds individual lease backend operations.
func WithMaintenanceMode ¶
func WithMaintenanceMode(enabled bool) RunnerOption
WithMaintenanceMode controls maintenance-policy schedule filtering.
func WithMaxConcurrentCallbacks ¶
func WithMaxConcurrentCallbacks(limit int) RunnerOption
WithMaxConcurrentCallbacks bounds active and timed-out callback goroutines.
func WithMaxConcurrentExecutions ¶
func WithMaxConcurrentExecutions(limit int) RunnerOption
WithMaxConcurrentExecutions bounds active and timed-out managed executions.
func WithObserver ¶
func WithObserver(observer Observer) RunnerOption
WithObserver appends a lifecycle observer when non-nil.
func WithOwner ¶
func WithOwner(owner string) RunnerOption
WithOwner sets the unique identity used for lease ownership.
func WithPauseSource ¶
func WithPauseSource(source PauseSource) RunnerOption
WithPauseSource supplies application-owned pause state. Lookup failures fail closed for ordinary schedules; EvenWhenPaused schedules do not consult it.
type Schedule ¶
type Schedule struct {
Name string
Version string
Task string
Expression string
Timezone string
Identity string
CoordinationID string
ParameterIdentity string
Parameters map[string]any
Enabled bool
Environments []string
DaysOfWeek []time.Weekday
TimeWindows []TimeWindow
MaintenancePolicy MaintenancePolicy
Conditions []Condition
StartAt time.Time
EndAt time.Time
Jitter time.Duration
Metadata map[string]string
MissedRunPolicy MissedRunPolicy
MaxCatchUp int
OverlapPolicy OverlapPolicy
OnOneServer bool
WithoutOverlapping bool
LeaseTTL time.Duration
OneServerTTL time.Duration
OverlapTTL time.Duration
RunTimeout time.Duration
RunInBackground bool
Hooks Hooks
EvenWhenPaused bool
}
Schedule is an immutable code-defined task timing and policy definition.
type ScheduleOverview ¶
ScheduleOverview combines an immutable schedule definition with its next enabled execution boundary. Next is zero for a disabled schedule.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
Package cron compiles documented five- or six-field cron expressions in an explicit IANA time zone without exposing the underlying parser implementation.
|
Package cron compiles documented five- or six-field cron expressions in an explicit IANA time zone without exposing the underlying parser implementation. |
|
examples
|
|
|
basic
command
Command basic runs a single-process scheduler with an in-memory lease store.
|
Command basic runs a single-process scheduler with an in-memory lease store. |
|
queue
Package queueexample demonstrates wiring durable queue dispatch into a scheduler runner.
|
Package queueexample demonstrates wiring durable queue dispatch into a scheduler runner. |
|
Package history provides bounded in-memory scheduler event history.
|
Package history provides bounded in-memory scheduler event history. |
|
Package idempotency integrates occurrence ownership with idempotency.
|
Package idempotency integrates occurrence ownership with idempotency. |
|
Package lease defines distributed ownership and fencing contracts.
|
Package lease defines distributed ownership and fencing contracts. |
|
conformance
Package conformance provides the shared lease-store contract suite.
|
Package conformance provides the shared lease-store contract suite. |
|
Package memory provides a deterministic process-local lease store.
|
Package memory provides a deterministic process-local lease store. |
|
Package postgres provides persistent server-time fenced leases.
|
Package postgres provides persistent server-time fenced leases. |
|
Package queue dispatches schedule occurrences through queue.
|
Package queue dispatches schedule occurrences through queue. |
|
Package schedulercli provides bounded scheduler inspection and recovery commands.
|
Package schedulercli provides bounded scheduler inspection and recovery commands. |
|
Package schedulerhttp provides bounded scheduler inspection and recovery endpoints.
|
Package schedulerhttp provides bounded scheduler inspection and recovery endpoints. |
|
Package schedulerservice composes a scheduler.Runner with the service lifecycle and correlation schedule semantics.
|
Package schedulerservice composes a scheduler.Runner with the service lifecycle and correlation schedule semantics. |
|
Package schedulertest provides deterministic runner test utilities.
|
Package schedulertest provides deterministic runner test utilities. |
|
Package telemetry records scheduler lifecycle logs, metrics, and traces.
|
Package telemetry records scheduler lifecycle logs, metrics, and traces. |
|
Package valkey provides atomic fenced leases backed by Valkey 9 or newer.
|
Package valkey provides atomic fenced leases backed by Valkey 9 or newer. |