* pb: add job type max runtime setting * plugin: default job type max runtime * plugin: redesign scheduler loop * admin ui: update scheduler settings * plugin: fix scheduler loop state name * plugin scheduler: restore backlog skip * plugin scheduler: drop legacy detection helper * admin api: require scheduler config body * admin ui: preserve detection interval on save * plugin scheduler: use job context and drain cancels * plugin scheduler: respect detection intervals * plugin scheduler: gate runs and drain queue * ec test: reuse req/resp vars * ec test: add scheduler debug logs * Adjust scheduler idle sleep and initial run delay * Clear pending job queue before scheduler runs * Log next detection time in EC integration test * Improve plugin scheduler debug logging in EC test * Expose scheduler next detection time * Log scheduler next detection time in EC test * Wake scheduler on config or worker updates * Expose scheduler sleep interval in UI * Fix scheduler sleep save value selection * Set scheduler idle sleep default to 613s * Show scheduler next run time in plugin UI --------- Co-authored-by: Copilot <copilot@github.com>
32 lines
661 B
Go
32 lines
661 B
Go
package plugin
|
|
|
|
import "time"
|
|
|
|
const (
|
|
defaultSchedulerIdleSleep = 613 * time.Second
|
|
)
|
|
|
|
type SchedulerConfig struct {
|
|
IdleSleepSeconds int32 `json:"idle_sleep_seconds"`
|
|
}
|
|
|
|
func DefaultSchedulerConfig() SchedulerConfig {
|
|
return SchedulerConfig{
|
|
IdleSleepSeconds: int32(defaultSchedulerIdleSleep / time.Second),
|
|
}
|
|
}
|
|
|
|
func normalizeSchedulerConfig(cfg SchedulerConfig) SchedulerConfig {
|
|
if cfg.IdleSleepSeconds <= 0 {
|
|
return DefaultSchedulerConfig()
|
|
}
|
|
return cfg
|
|
}
|
|
|
|
func (c SchedulerConfig) IdleSleepDuration() time.Duration {
|
|
if c.IdleSleepSeconds <= 0 {
|
|
return defaultSchedulerIdleSleep
|
|
}
|
|
return time.Duration(c.IdleSleepSeconds) * time.Second
|
|
}
|