From ab34f0065c8fb689a6ed1adb7711b2e6afaeb00a Mon Sep 17 00:00:00 2001 From: WGH Date: Tue, 2 May 2023 09:15:08 +0300 Subject: [PATCH] Support systemd notify protocol (#17062) --- cmd/server-main.go | 6 +++++- cmd/signals.go | 7 +++++++ go.mod | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/cmd/server-main.go b/cmd/server-main.go index 37d768dc3..a1f44bd07 100644 --- a/cmd/server-main.go +++ b/cmd/server-main.go @@ -34,6 +34,7 @@ import ( "syscall" "time" + "github.com/coreos/go-systemd/v22/daemon" "github.com/minio/cli" "github.com/minio/madmin-go/v2" "github.com/minio/minio-go/v7" @@ -641,7 +642,10 @@ func serverMain(ctx *cli.Context) { setConsoleSrv(srv) go func() { - logger.FatalIf(newConsoleServerFn().Serve(), "Unable to initialize console server") + server := newConsoleServerFn() + logger.FatalIf(server.Listen(), "Unable to initialize console server's sockets") + daemon.SdNotify(false, daemon.SdNotifyReady) + logger.FatalIf(server.Serve(), "Unable to initialize console server") }() } diff --git a/cmd/signals.go b/cmd/signals.go index a6ba8adad..616a4c26b 100644 --- a/cmd/signals.go +++ b/cmd/signals.go @@ -24,6 +24,7 @@ import ( "os" "strings" + "github.com/coreos/go-systemd/v22/daemon" "github.com/minio/minio/internal/logger" ) @@ -80,17 +81,23 @@ func handleSignals() { exit(stopProcess()) case osSignal := <-globalOSSignalCh: logger.Info("Exiting on signal: %s", strings.ToUpper(osSignal.String())) + daemon.SdNotify(false, daemon.SdNotifyStopping) exit(stopProcess()) case signal := <-globalServiceSignalCh: switch signal { case serviceRestart: logger.Info("Restarting on service signal") + daemon.SdNotify(false, daemon.SdNotifyReloading) stop := stopProcess() rerr := restartProcess() + if rerr == nil { + daemon.SdNotify(false, daemon.SdNotifyReady) + } logger.LogIf(context.Background(), rerr) exit(stop && rerr == nil) case serviceStop: logger.Info("Stopping on service signal") + daemon.SdNotify(false, daemon.SdNotifyStopping) exit(stopProcess()) } } diff --git a/go.mod b/go.mod index c0179880f..80e32b6e5 100644 --- a/go.mod +++ b/go.mod @@ -14,6 +14,7 @@ require ( github.com/cheggaaa/pb v1.0.29 github.com/coredns/coredns v1.10.1 github.com/coreos/go-oidc v2.2.1+incompatible + github.com/coreos/go-systemd/v22 v22.5.0 github.com/cosnicolaou/pbzip2 v1.0.1 github.com/dchest/siphash v1.2.3 github.com/djherbis/atime v1.1.0 @@ -112,7 +113,6 @@ require ( github.com/charmbracelet/lipgloss v0.7.1 // indirect github.com/containerd/console v1.0.3 // indirect github.com/coreos/go-semver v0.3.1 // indirect - github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect github.com/docker/go-units v0.5.0 // indirect