scheduler

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Apr 28, 2026 License: BSD-3-Clause Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func InitGlobalManager

func InitGlobalManager(config ManagerConfig)

InitGlobalManager initializes the global scheduler manager singleton

func NewJob

func NewJob(args types.CLIArgs, runAt time.Time, cronExpr, interval string) (types.Job, error)

NewJob constructs a Job from CLI args and desired schedule.

Types

type JobHandler

type JobHandler func(types.Job) error

type Logger

type Logger interface {
	Infof(format string, args ...any)
	Warnf(format string, args ...any)
	Errorf(format string, args ...any)
}

Logger is a minimal logging interface compatible with logrus.Logger and our logger package.

type ManagerConfig

type ManagerConfig struct {
	DBPath          string
	SMTPConfig      config.SMTPConfig
	OptimizedConfig OptimizedConfig
	ShutdownDelay   time.Duration // Time to wait before auto-shutdown when no jobs
	AutoShutdown    bool          // Whether to auto-shutdown when idle
}

ManagerConfig provides configuration for the scheduler manager

func DefaultManagerConfig

func DefaultManagerConfig() ManagerConfig

DefaultManagerConfig returns sensible defaults for the manager

type OptimizedConfig

type OptimizedConfig struct {
	MaxConcurrency  int
	AdaptivePolling bool
	BaseInterval    time.Duration
	MaxInterval     time.Duration
	MetricsPort     int
}

OptimizedConfig provides configuration for the scheduler

func DefaultOptimizedConfig

func DefaultOptimizedConfig() OptimizedConfig

DefaultOptimizedConfig returns sensible defaults

func DefaultOptimizedConfigWithPort added in v1.1.0

func DefaultOptimizedConfigWithPort(port int) OptimizedConfig

DefaultOptimizedConfigWithPort returns config with specified metrics port

type OptimizedScheduler

type OptimizedScheduler struct {
	*Scheduler
}

OptimizedScheduler is a simplified scheduler that wraps the base Scheduler. It maintains the same interface for backward compatibility but delegates to the simpler, more reliable base implementation.

func NewOptimizedScheduler

func NewOptimizedScheduler(db *database.BoltDBClient, log Logger, smtpCfg any, config OptimizedConfig) (*OptimizedScheduler, error)

NewOptimizedScheduler creates a scheduler (simplified wrapper around base Scheduler)

func (*OptimizedScheduler) CancelJob

func (s *OptimizedScheduler) CancelJob(jobID string) bool

CancelJob cancels a scheduled job

func (*OptimizedScheduler) ReattachHandlers

func (s *OptimizedScheduler) ReattachHandlers(handler JobHandler)

ReattachHandlers reattaches handlers to existing jobs

type Scheduler

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

Scheduler provides durable, concurrent job scheduling with persistent state.

func NewScheduler

func NewScheduler(db *database.BoltDBClient, log Logger) *Scheduler

NewScheduler constructs a scheduler and starts the dispatcher loop.

func (*Scheduler) AddJob

func (s *Scheduler) AddJob(job types.Job, handler JobHandler) error

AddJob registers a job and its handler, persists it, and schedules execution.

func (*Scheduler) CancelJob

func (s *Scheduler) CancelJob(jobID string) bool

CancelJob marks a job as cancelled and prevents future execution.

func (*Scheduler) ListJobs

func (s *Scheduler) ListJobs() ([]types.Job, error)

ListJobs returns all stored jobs, always reading from the DB so external modifications (e.g. from another process or test) are reflected immediately.

func (*Scheduler) ReattachHandlers

func (s *Scheduler) ReattachHandlers(handler JobHandler)

ReattachHandlers sets a default handler for all existing jobs that do not have one in-memory.

func (*Scheduler) Stop

func (s *Scheduler) Stop()

Stop stops the scheduler and waits for running tasks to finish.

type SchedulerManager

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

SchedulerManager provides automatic scheduler lifecycle management It automatically starts the scheduler when jobs are scheduled and manages cleanup

func GetGlobalManager

func GetGlobalManager() *SchedulerManager

GetGlobalManager returns the global scheduler manager singleton. Returns nil if not initialized.

func MustGetGlobalManager added in v1.1.0

func MustGetGlobalManager() *SchedulerManager

MustGetGlobalManager returns the global scheduler manager singleton. Panics if not initialized.

func NewSchedulerManager

func NewSchedulerManager(config ManagerConfig) *SchedulerManager

NewSchedulerManager creates a new scheduler manager

func (*SchedulerManager) CancelJob

func (sm *SchedulerManager) CancelJob(jobID string) error

CancelJob cancels a scheduled job

func (*SchedulerManager) IsRunning

func (sm *SchedulerManager) IsRunning() bool

IsRunning returns whether the scheduler is currently running

func (*SchedulerManager) ListJobs

func (sm *SchedulerManager) ListJobs() ([]types.Job, error)

ListJobs returns all scheduled jobs

func (*SchedulerManager) RunDaemon

func (sm *SchedulerManager) RunDaemon() error

RunDaemon runs the scheduler as a daemon process

func (*SchedulerManager) ScheduleJob

func (sm *SchedulerManager) ScheduleJob(args types.CLIArgs, runAt time.Time, cronExpr, interval string, handler JobHandler) error

ScheduleJob schedules a job, automatically starting the scheduler if needed

func (*SchedulerManager) Stop

func (sm *SchedulerManager) Stop() error

Stop gracefully stops the scheduler and all associated services

Jump to

Keyboard shortcuts

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