diff --git a/internal/server/router.go b/internal/server/router.go index 051f0be8..6cb3b14f 100644 --- a/internal/server/router.go +++ b/internal/server/router.go @@ -341,7 +341,7 @@ func (r *Router) installLoadBalancer(name string, slot TargetSlot, lb *LoadBalan return replaced, err } -func (r *Router) saveStateSnapshot() error { +func (r *Router) saveStateSnapshot() (err error) { services := []*Service{} r.withReadLock(func() error { for _, service := range r.services.All() { @@ -352,8 +352,15 @@ func (r *Router) saveStateSnapshot() error { f, err := os.Create(r.statePath) if err != nil { + slog.Error("Unable to create state file", "error", err, "path", r.statePath) return err } + defer func() { + if cerr := f.Close(); cerr != nil { + slog.Error("Unable to close state file", "error", cerr, "path", r.statePath) + err = errors.Join(err, cerr) + } + }() err = json.NewEncoder(f).Encode(services) if err != nil {