aboutsummaryrefslogtreecommitdiff
path: root/libpod
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2021-05-27 08:55:03 +0200
committerGitHub <noreply@github.com>2021-05-27 08:55:03 +0200
commit542d730987a953d8dc0a70416eaa53b218e6911b (patch)
tree15b5fb886254d52e337434db8c7d31cd5f294855 /libpod
parentd9eb1269257490dddfae3fde2fe57c3009f94287 (diff)
parentfad6e1d3ef334076f180ab8a31ae7fa7a309e096 (diff)
downloadpodman-542d730987a953d8dc0a70416eaa53b218e6911b.tar.gz
podman-542d730987a953d8dc0a70416eaa53b218e6911b.tar.bz2
podman-542d730987a953d8dc0a70416eaa53b218e6911b.zip
Merge pull request #10476 from mheon/ensure_exists_on_remove
Ensure that container still exists when removing
Diffstat (limited to 'libpod')
-rw-r--r--libpod/runtime_ctr.go9
1 files changed, 9 insertions, 0 deletions
diff --git a/libpod/runtime_ctr.go b/libpod/runtime_ctr.go
index 4e4b2a8ab..6c69d1b72 100644
--- a/libpod/runtime_ctr.go
+++ b/libpod/runtime_ctr.go
@@ -581,6 +581,15 @@ func (r *Runtime) removeContainer(ctx context.Context, c *Container, force, remo
if err := c.stop(c.StopTimeout()); err != nil && errors.Cause(err) != define.ErrConmonDead {
return errors.Wrapf(err, "cannot remove container %s as it could not be stopped", c.ID())
}
+
+ // We unlocked as part of stop() above - there's a chance someone
+ // else got in and removed the container before we reacquired the
+ // lock.
+ // Do a quick ping of the database to check if the container
+ // still exists.
+ if ok, _ := r.state.HasContainer(c.ID()); !ok {
+ return nil
+ }
}
// Remove all active exec sessions