mirror of
https://github.com/yusing/godoxy.git
synced 2026-01-11 21:10:30 +01:00
fix(config): nil panic introduced in ff934a4bb2911f5fa3c23d8fe6fea252d881fdc3; remove duplicated log
This commit is contained in:
@@ -52,15 +52,12 @@ func logNotifyWarn(action string, err error) {
|
||||
})
|
||||
}
|
||||
|
||||
var nilState *state
|
||||
|
||||
func Load() error {
|
||||
if HasState() {
|
||||
panic(errors.New("config already loaded"))
|
||||
}
|
||||
state := NewState()
|
||||
config.WorkingState.Store(state)
|
||||
defer config.WorkingState.Store(nilState)
|
||||
|
||||
cfgWatcher = watcher.NewConfigFileWatcher(common.ConfigFileName)
|
||||
|
||||
@@ -88,11 +85,11 @@ func Reload() gperr.Error {
|
||||
|
||||
newState := NewState()
|
||||
config.WorkingState.Store(newState)
|
||||
defer config.WorkingState.Store(nilState)
|
||||
|
||||
err := newState.InitFromFile(common.ConfigPath)
|
||||
if err != nil {
|
||||
newState.Task().FinishAndWait(err)
|
||||
config.WorkingState.Store(GetState())
|
||||
logNotifyError("reload", err)
|
||||
return gperr.New(ansi.Warning("using last config")).With(err)
|
||||
}
|
||||
@@ -106,7 +103,6 @@ func Reload() gperr.Error {
|
||||
SetState(newState)
|
||||
|
||||
if err := newState.StartProviders(); err != nil {
|
||||
gperr.LogWarn("start providers error", err)
|
||||
logNotifyError("start providers", err)
|
||||
return nil // continue
|
||||
}
|
||||
@@ -121,7 +117,7 @@ func WatchChanges() {
|
||||
configEventFlushInterval,
|
||||
OnConfigChange,
|
||||
func(err gperr.Error) {
|
||||
gperr.LogError("config reload error", err)
|
||||
logNotifyError("config reload", err)
|
||||
},
|
||||
)
|
||||
eventQueue.Start(cfgWatcher.Events(t.Context()))
|
||||
|
||||
@@ -36,7 +36,7 @@ type State interface {
|
||||
// could be nil before first call on Load
|
||||
var ActiveState synk.Value[State]
|
||||
|
||||
// nil-safe while loading config, nil otherwise
|
||||
// working state while loading config, same as ActiveState after successful load
|
||||
var WorkingState synk.Value[State]
|
||||
|
||||
var ErrConfigChanged = errors.New("config changed")
|
||||
|
||||
@@ -74,15 +74,7 @@ func NewMonitor(r types.Route) types.HealthMonCheck {
|
||||
}
|
||||
|
||||
func newMonitor(u *url.URL, cfg types.HealthCheckConfig, healthCheckFunc HealthCheckFunc) *monitor {
|
||||
state := config.WorkingState.Load()
|
||||
if state == nil {
|
||||
state = config.ActiveState.Load()
|
||||
}
|
||||
if state != nil {
|
||||
cfg.ApplyDefaults(state.Value().Defaults.HealthCheck)
|
||||
} else {
|
||||
cfg.ApplyDefaults(types.HealthCheckConfig{}) // use config defaults
|
||||
}
|
||||
cfg.ApplyDefaults(config.WorkingState.Load().Value().Defaults.HealthCheck)
|
||||
mon := &monitor{
|
||||
config: cfg,
|
||||
checkHealth: healthCheckFunc,
|
||||
|
||||
Reference in New Issue
Block a user