Fix systemd watchdog feature
Commit coreos/go-systemd@0c088e introduce cleaning environment. First usage of sdnotify (for type=notify) was clearing NOTIFY_SOCKET environment variable. sdnotify in watchdog was unable to ping back. Fix #1353
This commit is contained in:
parent
b67a27d0c7
commit
3c33eab35e
1 changed files with 9 additions and 6 deletions
|
@ -244,22 +244,25 @@ func run(traefikConfiguration *server.TraefikConfiguration) {
|
||||||
svr := server.NewServer(globalConfiguration)
|
svr := server.NewServer(globalConfiguration)
|
||||||
svr.Start()
|
svr.Start()
|
||||||
defer svr.Close()
|
defer svr.Close()
|
||||||
sent, err := daemon.SdNotify(true, "READY=1")
|
sent, err := daemon.SdNotify(false, "READY=1")
|
||||||
if !sent && err != nil {
|
if !sent && err != nil {
|
||||||
log.Error("Fail to notify", err)
|
log.Error("Fail to notify", err)
|
||||||
}
|
}
|
||||||
t, err := daemon.SdWatchdogEnabled(true)
|
t, err := daemon.SdWatchdogEnabled(false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("Problem with watchdog", err)
|
log.Error("Problem with watchdog", err)
|
||||||
} else if t != 0 {
|
} else if t != 0 {
|
||||||
// Send a ping each half time given
|
// Send a ping each half time given
|
||||||
t = t / 2
|
t = t / 2
|
||||||
go func(interval time.Duration) {
|
log.Info("Watchdog activated with timer each ", t)
|
||||||
tick := time.Tick(interval)
|
safe.Go(func() {
|
||||||
|
tick := time.Tick(t)
|
||||||
for range tick {
|
for range tick {
|
||||||
daemon.SdNotify(true, "WATCHDOG=1")
|
if ok, _ := daemon.SdNotify(false, "WATCHDOG=1"); !ok {
|
||||||
|
log.Error("Fail to tick watchdog")
|
||||||
}
|
}
|
||||||
}(t)
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
svr.Wait()
|
svr.Wait()
|
||||||
log.Info("Shutting down")
|
log.Info("Shutting down")
|
||||||
|
|
Loading…
Reference in a new issue