feat: configure graceful shutdown window
This commit is contained in:
@@ -19,6 +19,7 @@ type Config struct {
|
||||
ScheduleTickInterval time.Duration // ScheduleTickInterval 计划扫描间隔,范围100ms–1m。
|
||||
RecoveryTickInterval time.Duration // RecoveryTickInterval 执行租约恢复扫描间隔,范围100ms–1m。
|
||||
RuntimeBatchLimit int // RuntimeBatchLimit 每个后台批次的候选上限,范围1–100。
|
||||
ShutdownTimeout time.Duration // ShutdownTimeout 优雅排空和关闭窗口,范围1s–5m。
|
||||
}
|
||||
|
||||
func Load() (Config, error) { return FromEnv(os.Getenv) }
|
||||
@@ -33,6 +34,7 @@ func FromEnv(get func(string) string) (Config, error) {
|
||||
ScheduleTickInterval: time.Second,
|
||||
RecoveryTickInterval: 2 * time.Second,
|
||||
RuntimeBatchLimit: 100,
|
||||
ShutdownTimeout: 10 * time.Second,
|
||||
}
|
||||
if c.HTTPAddr == "" {
|
||||
c.HTTPAddr = "127.0.0.1:8080"
|
||||
@@ -77,6 +79,13 @@ func FromEnv(get func(string) string) (Config, error) {
|
||||
}
|
||||
c.RuntimeBatchLimit = n
|
||||
}
|
||||
if raw := get("ORBIT_SHUTDOWN_TIMEOUT"); raw != "" {
|
||||
d, err := time.ParseDuration(raw)
|
||||
if err != nil || d < time.Second || d > 5*time.Minute {
|
||||
return Config{}, errors.New("ORBIT_SHUTDOWN_TIMEOUT must be a duration from 1s to 5m")
|
||||
}
|
||||
c.ShutdownTimeout = d
|
||||
}
|
||||
if c.MetricsAddr != "" {
|
||||
_, port, err := net.SplitHostPort(c.MetricsAddr)
|
||||
n, parseErr := strconv.Atoi(port)
|
||||
|
||||
Reference in New Issue
Block a user