Merge pull request #41832 from thaJeztah/sd_notify_stopping

cmd/dockerd: sd_notify STOPPING=1 when shutting down
This commit is contained in:
Akihiro Suda 2020-12-23 03:49:35 +09:00 committed by GitHub
commit d9a9aeea22
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 29 additions and 14 deletions

View file

@ -184,7 +184,7 @@ func (cli *DaemonCli) start(opts *daemonOptions) (err error) {
}, logrus.StandardLogger())
// Notify that the API is active, but before daemon is set up.
preNotifySystem()
preNotifyReady()
pluginStore := plugin.NewStore()
@ -242,13 +242,15 @@ func (cli *DaemonCli) start(opts *daemonOptions) (err error) {
go cli.api.Wait(serveAPIWait)
// after the daemon is done setting up we can notify systemd api
notifySystem()
notifyReady()
// Daemon is fully initialized and handling API traffic
// Wait for serve API to complete
errAPI := <-serveAPIWait
c.Cleanup()
// notify systemd that we're shutting down
notifyStopping()
shutdownDaemon(d)
// Stop notification processing and any background processes

View file

@ -1,9 +1,13 @@
package main
// preNotifySystem sends a message to the host when the API is active, but before the daemon is
func preNotifySystem() {
// preNotifyReady sends a message to the host when the API is active, but before the daemon is
func preNotifyReady() {
}
// notifySystem sends a message to the host when the server is ready to be used
func notifySystem() {
// notifyReady sends a message to the host when the server is ready to be used
func notifyReady() {
}
// notifyStopping sends a message to the host when the server is shutting down
func notifyStopping() {
}

View file

@ -2,12 +2,17 @@ package main
import systemdDaemon "github.com/coreos/go-systemd/v22/daemon"
// preNotifySystem sends a message to the host when the API is active, but before the daemon is
func preNotifySystem() {
// preNotifyReady sends a message to the host when the API is active, but before the daemon is
func preNotifyReady() {
}
// notifySystem sends a message to the host when the server is ready to be used
func notifySystem() {
// notifyReady sends a message to the host when the server is ready to be used
func notifyReady() {
// Tell the init daemon we are accepting requests
go systemdDaemon.SdNotify(false, systemdDaemon.SdNotifyReady)
}
// notifyStopping sends a message to the host when the server is shutting down
func notifyStopping() {
go systemdDaemon.SdNotify(false, systemdDaemon.SdNotifyStopping)
}

View file

@ -27,8 +27,8 @@ func getDaemonConfDir(root string) (string, error) {
return filepath.Join(root, `\config`), nil
}
// preNotifySystem sends a message to the host when the API is active, but before the daemon is
func preNotifySystem() {
// preNotifyReady sends a message to the host when the API is active, but before the daemon is
func preNotifyReady() {
// start the service now to prevent timeouts waiting for daemon to start
// but still (eventually) complete all requests that are sent after this
if service != nil {
@ -39,8 +39,12 @@ func preNotifySystem() {
}
}
// notifySystem sends a message to the host when the server is ready to be used
func notifySystem() {
// notifyReady sends a message to the host when the server is ready to be used
func notifyReady() {
}
// notifyStopping sends a message to the host when the server is shutting down
func notifyStopping() {
}
// notifyShutdown is called after the daemon shuts down but before the process exits.