diff --git a/daemon/kill.go b/daemon/kill.go index a230eaa76e..1292f86b0c 100644 --- a/daemon/kill.go +++ b/daemon/kill.go @@ -64,6 +64,8 @@ func (daemon *Daemon) killWithSignal(container *containerpkg.Container, sig int) container.Lock() defer container.Unlock() + daemon.stopHealthchecks(container) + if !container.Running { return errNotRunning(container.ID) } diff --git a/daemon/monitor.go b/daemon/monitor.go index c0a265dac5..c635edc12a 100644 --- a/daemon/monitor.go +++ b/daemon/monitor.go @@ -39,10 +39,14 @@ func (daemon *Daemon) ProcessEvent(id string, e libcontainerd.EventType, ei libc if runtime.GOOS == "windows" { return errors.New("received StateOOM from libcontainerd on Windows. This should never happen") } + + c.Lock() + defer c.Unlock() daemon.updateHealthMonitor(c) if err := c.CheckpointTo(daemon.containersReplica); err != nil { return err } + daemon.LogContainerEvent(c, "oom") case libcontainerd.EventExit: if int(ei.Pid) == c.Pid { diff --git a/daemon/stop.go b/daemon/stop.go index 7eadba7e26..71d0b2ab9c 100644 --- a/daemon/stop.go +++ b/daemon/stop.go @@ -43,8 +43,6 @@ func (daemon *Daemon) containerStop(container *containerpkg.Container, seconds i return nil } - daemon.stopHealthchecks(container) - stopSignal := container.StopSignal() // 1. Send a stop signal if err := daemon.killPossiblyDeadProcess(container, stopSignal); err != nil {