diff options
Diffstat (limited to 'internal/admin/service.go')
| -rw-r--r-- | internal/admin/service.go | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/internal/admin/service.go b/internal/admin/service.go index bcf42f9..c1082d5 100644 --- a/internal/admin/service.go +++ b/internal/admin/service.go @@ -26,8 +26,17 @@ func (s *Servicer) Reload() { slog.Error("refusing to reload config") return } + oldConfig := s.Conf s.Conf = tmpConfig - _ = s.InitServer() + if err := s.InitServer(); err != nil { + slog.Error("couldn't init server with new config, falling back", err) + s.Conf = oldConfig + if err := s.InitServer(); err != nil { + slog.Error("couldn't init server with old config, falling back", err) + panic("new and old config couldn't init server, no available config to run") + } + slog.Error("server has fallen back to old config but it lives in memory only, in fragile state") + } } // InitServer initialize a git server and configure |