Support systemd notify protocol (#17062)

This commit is contained in:
WGH
2023-05-02 09:15:08 +03:00
committed by GitHub
parent e8c0a50862
commit ab34f0065c
3 changed files with 13 additions and 2 deletions

View File

@@ -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")
}()
}

View File

@@ -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())
}
}