diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2021-05-27 08:55:03 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-27 08:55:03 +0200 |
commit | 542d730987a953d8dc0a70416eaa53b218e6911b (patch) | |
tree | 15b5fb886254d52e337434db8c7d31cd5f294855 | |
parent | d9eb1269257490dddfae3fde2fe57c3009f94287 (diff) | |
parent | fad6e1d3ef334076f180ab8a31ae7fa7a309e096 (diff) | |
download | podman-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
-rw-r--r-- | libpod/runtime_ctr.go | 9 |
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 |