diff options
author | Matthew Heon <matthew.heon@pm.me> | 2019-04-01 18:17:16 -0400 |
---|---|---|
committer | Matthew Heon <matthew.heon@pm.me> | 2019-05-03 10:36:16 -0400 |
commit | dc42304f3804632d01345478ab9b1f122b48d516 (patch) | |
tree | d63d4dc4738ab48f8f0ba81674303b9c94147d6f /libpod | |
parent | 0d73ee40b2e95ec7d50c7ee72fcb24cae0e190a7 (diff) | |
download | podman-dc42304f3804632d01345478ab9b1f122b48d516.tar.gz podman-dc42304f3804632d01345478ab9b1f122b48d516.tar.bz2 podman-dc42304f3804632d01345478ab9b1f122b48d516.zip |
Sending signals to containers prevents restart policy
Noticed this when testing some behavior with Docker.
Signed-off-by: Matthew Heon <matthew.heon@pm.me>
Diffstat (limited to 'libpod')
-rw-r--r-- | libpod/container_api.go | 9 | ||||
-rw-r--r-- | libpod/pod_api.go | 7 |
2 files changed, 15 insertions, 1 deletions
diff --git a/libpod/container_api.go b/libpod/container_api.go index 46c913e99..8b3dd4186 100644 --- a/libpod/container_api.go +++ b/libpod/container_api.go @@ -199,8 +199,15 @@ func (c *Container) Kill(signal uint) error { if c.state.State != ContainerStateRunning { return errors.Wrapf(ErrCtrStateInvalid, "can only kill running containers") } + defer c.newContainerEvent(events.Kill) - return c.runtime.ociRuntime.killContainer(c, signal) + if err := c.runtime.ociRuntime.killContainer(c, signal); err != nil { + return err + } + + c.state.StoppedByUser = true + + return c.save() } // Exec starts a new process inside the container diff --git a/libpod/pod_api.go b/libpod/pod_api.go index 9a6baf23e..9ed5c88eb 100644 --- a/libpod/pod_api.go +++ b/libpod/pod_api.go @@ -364,6 +364,13 @@ func (p *Pod) Kill(signal uint) (map[string]error, error) { } logrus.Debugf("Killed container %s with signal %d", ctr.ID(), signal) + + ctr.state.StoppedByUser = true + if err := ctr.save(); err != nil { + ctrErrors[ctr.ID()] = err + } + + ctr.lock.Unlock() } if len(ctrErrors) > 0 { |