mirror of
https://github.com/containers/podman.git
synced 2025-05-21 00:56:36 +08:00
Ensure that cleanup runs before we set Removing state
Cleaning up the OCI runtime is not allowed in the Removing state. To ensure it is actually cleaned up, when calling cleanup() as part of removing a container, do so before we set the Removing state, so we can successfully remove. Signed-off-by: Matthew Heon <mheon@redhat.com>
This commit is contained in:
@ -488,20 +488,25 @@ func (r *Runtime) removeContainer(ctx context.Context, c *Container, force bool,
|
||||
}
|
||||
}
|
||||
|
||||
var cleanupErr error
|
||||
|
||||
// Clean up network namespace, cgroups, mounts.
|
||||
// Do this before we set ContainerStateRemoving, to ensure that we can
|
||||
// actually remove from the OCI runtime.
|
||||
if err := c.cleanup(ctx); err != nil {
|
||||
cleanupErr = errors.Wrapf(err, "error cleaning up container %s", c.ID())
|
||||
}
|
||||
|
||||
// Set ContainerStateRemoving
|
||||
c.state.State = define.ContainerStateRemoving
|
||||
|
||||
if err := c.save(); err != nil {
|
||||
if cleanupErr != nil {
|
||||
logrus.Errorf(err.Error())
|
||||
}
|
||||
return errors.Wrapf(err, "unable to set container %s removing state in database", c.ID())
|
||||
}
|
||||
|
||||
var cleanupErr error
|
||||
|
||||
// Clean up network namespace, cgroups, mounts
|
||||
if err := c.cleanup(ctx); err != nil {
|
||||
cleanupErr = errors.Wrapf(err, "error cleaning up container %s", c.ID())
|
||||
}
|
||||
|
||||
// Stop the container's storage
|
||||
if err := c.teardownStorage(); err != nil {
|
||||
if cleanupErr == nil {
|
||||
|
Reference in New Issue
Block a user