add timeout for http shutdown, add db disconnect
This commit is contained in:
parent
3ae340527f
commit
735440d1a3
1 changed files with 28 additions and 8 deletions
24
app.go
24
app.go
|
@ -59,6 +59,7 @@ const (
|
||||||
Sqlite = "sqlite3"
|
Sqlite = "sqlite3"
|
||||||
updateInterval = 5000
|
updateInterval = 5000
|
||||||
HTTPReadTimeout = 30 * time.Second
|
HTTPReadTimeout = 30 * time.Second
|
||||||
|
HTTPShutdownTimeout = 3 * time.Second
|
||||||
privateKeyFileMode = 0o600
|
privateKeyFileMode = 0o600
|
||||||
|
|
||||||
registerCacheExpiration = time.Minute * 15
|
registerCacheExpiration = time.Minute * 15
|
||||||
|
@ -668,8 +669,13 @@ func (h *Headscale) Serve() error {
|
||||||
Msg("Received signal to stop, shutting down gracefully")
|
Msg("Received signal to stop, shutting down gracefully")
|
||||||
|
|
||||||
// Gracefully shut down servers
|
// Gracefully shut down servers
|
||||||
promHTTPServer.Shutdown(ctx)
|
ctx, cancel := context.WithTimeout(context.Background(), HTTPShutdownTimeout)
|
||||||
httpServer.Shutdown(ctx)
|
if err := promHTTPServer.Shutdown(ctx); err != nil {
|
||||||
|
log.Error().Err(err).Msg("Failed to shutdown prometheus http")
|
||||||
|
}
|
||||||
|
if err := httpServer.Shutdown(ctx); err != nil {
|
||||||
|
log.Error().Err(err).Msg("Failed to shutdown http")
|
||||||
|
}
|
||||||
grpcSocket.GracefulStop()
|
grpcSocket.GracefulStop()
|
||||||
|
|
||||||
// Close network listeners
|
// Close network listeners
|
||||||
|
@ -680,7 +686,21 @@ func (h *Headscale) Serve() error {
|
||||||
// Stop listening (and unlink the socket if unix type):
|
// Stop listening (and unlink the socket if unix type):
|
||||||
socketListener.Close()
|
socketListener.Close()
|
||||||
|
|
||||||
|
// Close db connections
|
||||||
|
db, err := h.db.DB()
|
||||||
|
if err != nil {
|
||||||
|
log.Error().Err(err).Msg("Failed to get db handle")
|
||||||
|
}
|
||||||
|
err = db.Close()
|
||||||
|
if err != nil {
|
||||||
|
log.Error().Err(err).Msg("Failed to close db")
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Info().
|
||||||
|
Msg("Headscale stopped")
|
||||||
|
|
||||||
// And we're done:
|
// And we're done:
|
||||||
|
cancel()
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue